Dynamické snippety a jejich překreslování

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
JaxP
Člen | 62
+
0
-

Mějme šablonu kde pomocí $item a related() vytahujeme řádky pomocí cizího klíče

<div n:snippet=rowsContainer>
    <div n:foreach="$item->related('rows')->fetchAll() as $row" n:snippet="row-{$row->id}">
         {include 'tiles/'.$row->template->filename.'.latte', 'admin' => true, 'row' => $row}
    </div>
</div>

A mějme k tomu připravený handle


    public function handleDeleteBlock($id)
    {
        // block je dítě row, obsažen v includu
        $block = /* vytažení bloku */;
        $block->delete();
        $this->redrawControl('rowsContainer');
    }

Problém:
Po následném překreslení je $item (původně dosazen do template v renderDetail($id)) roven false.
Jak zařídit překreslení tak, aby $item zůstal a vykreslil se pouze nově daný řádek pro $row v kterém jsme smazali $block?

V opačném případě (přidávání bloku) je vše OK.

    public function handleAddBlock($row_id)
    {
        $this->blocksModel->save($values);
        $this->redrawControl('rowsContainer');
    } //$item zůstane

Děkuji za rady

Editoval JaxP (9. 4. 2018 16:07)

JaxP
Člen | 62
+
0
-

Problém vyřešen.

Metoda handleDeleteBlock($id) očekává parametr $id, stejně jako renderDetail($id) (tím se přetíží parametr $id pro $item). Změna názvu proměnné handleDeleteBlock($block_id) zabrala.