Překreslení celé tabulky s dynamickými snippety
- Mart78
- Člen | 31
Ahoj, mám problém s překreslením snippetu tabulky. Mám tabulku, kterou chci kliknutím na hlavičku sloupce seřadit a překreslit. V tabulce mám ale na každém řádku ještě dynamický snippet, který se překresluje po změně počtu kusů. Viz kód:
šablona:
{block content}
{snippet assortmentContainer}
<table n:if="count($assortmentAll)">
<thead>
<tr>
<th><a class="ajax" n:href="changeSorting! $tableColumnsNames[0]['name']">#</a></th>
<th><a class="ajax" n:href="changeSorting! $tableColumnsNames[3]['name']">Produkt</a></th>
<th><a class="ajax" n:href="changeSorting! $tableColumnsNames[8]['name']">Kusů</a></th>
</tr>
</thead>
<tbody>
<tr n:foreach="$assortmentAll as $sortiment">
<td>{$sortiment->ID}</td>
<td>{$sortiment->name}</td>
<td><div class="snippet" n:snippet="pieces-$sortiment->ID">{$sortiment->pieces}</div>
<a n:href="changePieces! $sortiment->ID, 'plus'" class="ajax"></a>
<a n:href="changePieces! $sortiment->ID, 'minus'" class="ajax"></a>
</td>
</tr>
</tbody>
</table>
{/snippet}
{/block}
presenter:
public function handleChangePieces($sortimentId, $operation)
{
... kód ...
if($this->isAjax()){
$this->template->assortmentAll = array($this->assortmentRepository->findById($sortimentId));
$this->redrawControl('assortmentContainer');
} else {
$this->redirect('this');
}
}
public function handleChangeSorting($by)
{
$this->template->assortmentAll = $this->assortmentRepository->findAll()->order($by);
if($this->isAjax()) {
$this->redrawControl('assortmentContainer');
} else {
$this->redirect('this');
}
}
public function renderDefault()
{
...
if(!isset($this->template->assortmentAll)) {
$this->template->assortmentAll = $this->assortmentRepository->findAll();
}
...
}
Problém mám takový, že metoda handleChangePieces() funguje správně, a
patřičný snippet „pieces-…“ se překreslí. Ale metoda
handleChangeSorting() nefunguje, respektive response
je {"state":[],"snippets":{"snippet--pieces-5":"10","snippet--pieces-8":"36","snippet--pieces-9":"24","snippet--pieces-7":"2","snippet--pieces-6":"2","snippet--pieces-4":"2","snippet--pieces-2":"3"}}
Věděl by někdo prosím poradit jak to rozjet? jak upravit snippety? Díky moc
- Mart78
- Člen | 31
Přišel jsem na to sám, celé se to muselo obalit ještě do jednoho snippetu, viz. https://doc.nette.org/…ication/ajax#… .. i když nevím úplně proč, tak to funguje.
{block content}
{snippet assortmentMainSnipp}
<table n:if="count($assortmentAll)">
<thead>
<tr>
<th><a class="ajax" n:href="changeSorting! $tableColumnsNames[0]['name']">#</a></th>
<th><a class="ajax" n:href="changeSorting! $tableColumnsNames[3]['name']">Produkt</a></th>
<th><a class="ajax" n:href="changeSorting! $tableColumnsNames[8]['name']">Kusů</a></th>
</tr>
</thead>
<tbody n:snippet="assortmentContainer">
<tr n:foreach="$assortmentAll as $sortiment">
<td>{$sortiment->ID}</td>
<td>{$sortiment->name}</td>
<td><div class="snippet" n:snippet="pieces-$sortiment->ID">{$sortiment->pieces}</div>
<a n:href="changePieces! $sortiment->ID, 'plus'" class="ajax"></a>
<a n:href="changePieces! $sortiment->ID, 'minus'" class="ajax"></a>
</td>
</tr>
</tbody>
</table>
{/snippet}
{/block}
a v handleChangeSorting() překresluji snippet assortmentMainSnipp