Jak použít {sep} pro každý řádek zvlášť?

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

Dobrý den,

mám vytvořenou databázi písniček. V ní jsem si vytvořil tabulku Interpret (ID, jmeno), Skladba (ID, nazev) a Pisnicka (ID, interpret_id, skladba_id). Tzn. že skladba může mít jednoho nebo více interpretů. Chtěl bych aby výpis na stránku vypadal asi takto:
interpret A, interpret B, interpret C – název písničky
interpret B, interpret D – název písničky
interpret C – název písničky
Tím myslím to, že pro každou skladbu (písničku) vypíšu na jeden řádek všechny její interprety oddělené např. čárkou, ale poslední z nich čárku mít nebude. A to samé chci tak udělat pro každý další řádek (zvlášť). Zkoušel jsem použít {sep}, {/sep}, ale měl jsem ho ve foreach pro písničky ⇒ vypsaly se všechny řádky (skladba + interpreti dané skladby) i s čárkou za posledním interpretem. Pouze u posledního řádku se čárka nevypsala. Ale nevím jak upravit foreach nebo přidat nějakou podmínku, aby se {sep} použil pro každý řádek (skladbu) zvlášť.
Moje šablona s chybným {sep} ve foreach:

`{block content}
<table>
{foreach $skladby as $skladba}
<tr>
<td>
{foreach $pisnicky as $pisnicka}
{if $pisnicka->skladba_id == $skladba->ID}
{$pisnicka->interpret->jmeno}{sep},{/sep}
{/if}
{/foreach}
</td>
<td>-</td>
<td>{$skladba->nazev}</td>
 </tr>

{/foreach}
</table>
{/block}`

vvoody
Člen | 910
+
0
-

Na začiatok nejaké to čítanie.

A teraz k veci. Tie previazané pesničky ku skladbám sa robia takto:

{foreach $skladby as $skladba}
	{foreach $skladba->related('Pisnicka','skladba_id') as $pisnicka}
		{$pisnicka->interpret->jmeno}{sep},{/sep}
	{/foreach}
{/foreach}

Nikdy v šablóne neiteruj nad väčším množstvom prvkov než potrebuješ, je to bad practise, ktorý vedie k takýmto problémom, čiže si vždy dáta popredu uprav/prefiltruj mimo šablóny. Budeš ju mať potom prehľadnejšiu.