Řádek tabulky jako dynamický snippet – nefunkční n:class na řádku

BigCharlie
Člen | 279
+
0
-

Napadá někoho, jak elegantně vyřešit tohle? Všechno funguje (tohle je výsek kódu, takže je to obalené dalším snippetem), s jedinou drobnou výjimkou.

<tbody n:foreach="$list->getItems() as $item">
	<tr
		n:snippet="item-{$item->getId()}"
		n:class="$item->isFinished() ? line-through"
	>
		<td>
			<a n:href="finishItem! $item->getId()" class="ajax">Finish</a>
		</td>
		<td>...</td>
	</tr>
</tbody>

Po invalidaci příslušných snippetů se řádek tabulky vykreslí správně, ale neaktualizuje se třída řádku – protože se posílá pouze obsah snippetu, tj. všechny <td>, ale už ne obalující <tr>.

Takže vím proč, ale existuje způsob, jak to vyřešit? Není možné použít {snippet}, protože ten se vykresluje do divu, což tabulku rozstřelí…

Šaman
Člen | 2591
+
0
-

Řešil bych to oklikou a přidal tu třídu buňkám.

Gappa
Nette Blogger | 177
+
0
-

Co dát n:snippet na <tbody> (těch může v být v tabulce neomezeně) a ty obalit {foreach} makrem? :)

You may use more than one <tbody> per table as long as they are all consecutive. This lets you divide the rows in large tables into sections, each of which may be separately formatted if so desired.

BigCharlie
Člen | 279
+
0
-

@Šaman Asi mi nic jiného nezbyde, nic lepšího jsem nevymyslel. Když na něco takového narazím, obvykle mě někdo mě odkáže do dokumentace, kde najdu „novinku“, starou tři roky, kterou jsem ještě nepotřeboval ;-)

Tak jsem si myslel, jestli třeba něco takového neexistuje i v tomhle případě – i když dokumentaci jsem prohledal jako první…

@Gappa Jak je vidět z ukázky, tbody už používám pro nadřazený cyklus, to neklapne…

Díky za tipy.

Martk
Člen | 629
+
0
-

@BigCharlie Co nefunguje na tomhle? Tohle by mělo imo fungovat

<tbody n:foreach="$list->getItems() as $item" n:snippet="item-{$item->getId()}">
BigCharlie
Člen | 279
+
0
-

@Martk Na tom funguje úplně všechno. @Gappa Pardon, nejspíš si myslel to samé a mně to nedocvaklo…

Díky za popostrčení!

Editoval BigCharlie (28. 7. 2021 12:06)