CurlyBrackets foreach – SmartCachingIterator
- romansklenar
- Člen | 655
Při použítí těchto značek se vytváří objekt SmartCachingIterator
pro využití všech featurek jako isLast
, isOdd
apod.
takže se zde vztahují i všechna jeho omezení, která má (viz jeho
konstruktor).
- Jan Tvrdík
- Nette guru | 2595
Ola napsal(a): manuální úpravu $macros .. to už to snad radši nechám v tom php
Úprava $macros
je zcela korektní a čistý způsob. Co ti na
něm vadí?
- David Grudl
- Nette Core | 8228
Jo problém je v tom, že se ti nelíbí kód? Tak s takovým hlašením chyb běž… víš kam.
- Jakub Šulák
- Člen | 222
Dotaz trochu mimo výše uvedené příspěvky.
Není nějaká šikovná zkratka v CurlyBrackets pro foreach na omezení počtu průchodů?
Něco jako:
<?php
{foreach $array as $value}
{if $iterator->getCounter()<=2}
<p>{$value}</p>
{/if}
{/foreach}
// zkratka
{foreach:2 $array as $value}
<p>{$value}</p>
{/foreach}
?>
Typický příklad je výpis novinek, nebo produktů ve slevě, apod.
A další dotaz, pokud mám vnořené foreach, tak jak funguje proměnná $iterator?
- David Grudl
- Nette Core | 8228
Výpis novinek nebo produktů ve slevě by bylo rozumnější spíš omezit už na straně modelu, ne? Každopádně myslím, že jde o docela minoritní požadavek, takže speciální zkratku bych asi nepřidával.
Ve vnořených foreach patří $iterator
vždy tomu
nejbližšímu cyklu. Pokud bys potřeboval přistupovat k
$iterator
nadřazeného cyklu, tak je nejjednodušší si ho
uložit do pomocné proměnné.
- Jan Tvrdík
- Nette guru | 2595
PetrP napsal(a):
Mě by se spíš jednou za čas hodilo nějaké jednoduché opakovadlo:
{loop 10} {/loop} <!-- ano můžu použít např {for}, ale to je na víc ťukání ;] -->
Tak si to napiš pomocí $macros
.