Jak použít {sep} pro každý řádek zvlášť?
- imartyn
- Člen | 9
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
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.