Cyklus foreach v foreach v latte
- ondraondra81
- Člen | 82
Ahoj,
řeším takový zajímavý problém.
Když v latte šabloně udělám toto.
{foreach $years as $year}
<ul>
<li>{$year->rok} ({$year->pocet})</li>
<ul>
{foreach $archives as $archiv}
<li>{$archiv->mesic} ({$archiv->pocet})</li>
{/foreach}
</ul>
</ul>
{/foreach}
dostanu tuto chybu:
Nette\InvalidStateException
Nette\Database\ResultSet implements only one way iterator.
Pokud ale dam ty cykly za sebe tak probehnou normalne.
- David Matějka
- Moderator | 6445
Necha se projit foreachem jen jednou, muzes ho (v presenteru) obalit
treba CachingIterator-em
Editoval matej21 (24. 4. 2014 0:47)
- David Grudl
- Nette Core | 8233
K čemu by obalení CachingIteratorem bylo?
Vícekrát by tuším mohlo jít projít
{foreach $archives->fetchAll() as $archiv}
- Tomáš Votruba
- Moderator | 1114
Možná poslouží
{foreach $archives as $archiv |noiterate}
...
{/}
Editoval Tomáš Votruba (24. 4. 2014 0:23)
- David Matějka
- Moderator | 6445
@dg: konkretne od flagu FULL_CACHE jsem ocekaval, ze by to pak nemuselo opakovane iterovat
@Tomáš Votruba: to jen v sablone vypne obaleni CachingIteratorem, takze to nepomuze
slo by taky rovnou v presenteru zavolat
iterator_to_array($result)
(coz je to, co interne dela
fetchAll)