vypisovanie dat z databazy do viacerych stlpcov tabulky v latte

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

Dobry den, chcel by som sa podakovat jednu vec (mozno pre niekoho az primitivnu :)), ale dlho sa s tym trapim a stale to nevyzera tak, ako si predstavujem. Vypisujem v latte sablony data z databazy takymto sposobom:

<?php
	<table>
    {foreach $pantryFood as $food}
        <tr>
            <td>{$food->name} </td>
        </tr>
    {/foreach}
	</table>
?>

Pri takomto vypise mi zobrazi stranku kde mam vsetky polozky (vyse 50) pod sebou v jednom stlpci. Ako mam v Nette sikovne nastavit tak aby sa mi vypisalo napriklad 10 zaznamov do prveho stlpca dalsich 10 do druheho, teda dokopy by bolo 5 stlpcov?

Ondris
Člen | 37
+
0
-

V šablonách je skvělá věc, která se jmenuje iterator: https://latte.nette.org/cs/tags#… .
Takže pomocí funkce getCounter() si zjistíš kolikátý je průchod cyklem a další sloupec vypíšeš každý desátý průchod.

Matej123
Člen | 150
+
0
-

jasne to poznam take veci, ale neviem velmi ako to zakomponovat do tohto kodu co som tu daval. Nevedel/li by si/ste mi upravit kod vyssie aby to tak fungovalo? :)

Ondris napsal(a):

V šablonách je skvělá věc, která se jmenuje iterator: https://latte.nette.org/cs/tags#… .
Takže pomocí funkce getCounter() si zjistíš kolikátý je průchod cyklem a další sloupec vypíšeš každý desátý průchod.

Mysteria
Člen | 797
+
0
-

Já používám tohle (shodou okolností taky pro pět sloupců). Jenom si tam samozřejmě přepiš $players as $player na svoje vlastní proměnné. Fungování je jednoduchý, každý pátý záznam ukončíš stávající a začneš nový řádek. Poslední podmínka se pak stará o to, aby byl výsledek validní, tzn. aby poslední řádek měl vždy 5 sloupců, i když pro ně už nejsou údaje (tzn. když v posledním řádku budou jenom data pro dva sloupce, tak do dalších třech se dá mezera).

<tbody n:inner-foreach='$players as $player'>
	{if $iterator->counter === 1}<tr>{/if}
	<td><strong>{$player}</strong></td>
	{if $iterator->counter % 5 === 0}</tr>
		{if !$iterator->last}<tr>{/if}
	{/if}
	{if $iterator->last && count($players) % 5 !== 0}
		<td n:for='$i = 1; $i <= 5 - $iterator->counter % 5; $i++'>&nbsp;</td>
		</tr>
	{/if}
</tbody>
Matej123
Člen | 150
+
0
-

dakujem, pomohlo mi to :)

Mysteria napsal(a):

Já používám tohle (shodou okolností taky pro pět sloupců). Jenom si tam samozřejmě přepiš $players as $player na svoje vlastní proměnné. Fungování je jednoduchý, každý pátý záznam ukončíš stávající a začneš nový řádek. Poslední podmínka se pak stará o to, aby byl výsledek validní, tzn. aby poslední řádek měl vždy 5 sloupců, i když pro ně už nejsou údaje (tzn. když v posledním řádku budou jenom data pro dva sloupce, tak do dalších třech se dá mezera).

<tbody n:inner-foreach='$players as $player'>
	{if $iterator->counter === 1}<tr>{/if}
	<td><strong>{$player}</strong></td>
	{if $iterator->counter % 5 === 0}</tr>
		{if !$iterator->last}<tr>{/if}
	{/if}
	{if $iterator->last && count($players) % 5 !== 0}
		<td n:for='$i = 1; $i <= 5 - $iterator->counter % 5; $i++'>&nbsp;</td>
		</tr>
	{/if}
</tbody>