{each}..{eachelse}..{/each}

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

Keďže som robil chvíľu v Smarty a makro {foreachelse} sa mi zapáčilo tak som si ho pridal aj do LatteFiltra. Táto téma sa už riešila viackrát, napr. tutu

Zdrojové kódy sú na Githube: https://gist.github.com/462628

Registruje sa to rovnako ako Honzové FormMacros teda v bootstrape. Je to pre PHP 5.3. Ak chcete pre PHP 5.2, tak odstráňte všetky namespace.

\Nette\Templates\AnotherLatteMacros::register();

Použiva sa to jednoducho:

{each $someArray as $key => $value}
    <p>
        {if $iterator->isFirst()}First item:{/if} <!-- funguje aj iterator, ako v normalnom {foreach} -->

	{$key} => {$value}
	</p>
{eachelse}
	<p>Empty.</p>
{/each}

$someArray môže byť všetko čo pobere SmartCachingIterator.

Enjoy ^_^

Editoval Cifro (4. 7. 2010 0:19)

rokerkony
Člen | 122
+
0
-

super :-) pořád se mi do toho nechtělo… díky moc, ušetří to pár znaků :-) :-)

Cifro
Člen | 245
+
0
-

rokerkony napsal(a): díky moc, ušetří to pár znaků :-) :-)

Za málo ^_^

Ja som v tejto mojej implementácii „zjemnil“ Nette a to tak, že keď hodnota v $someArray bola null pretypoval som to na prázdne pole. Ale Nette vyhadzuje výnimku keď je hodnota null.

Neviem či to nechať, alebo zjednotiť s pôvodnou implementáciou foreachu?

iguana007
Člen | 970
+
0
-

Nice :o) Hodí se ;)

rokerkony
Člen | 122
+
0
-

Cifro napsal(a):

rokerkony napsal(a): díky moc, ušetří to pár znaků :-) :-)

Za málo ^_^

Ja som v tejto mojej implementácii „zjemnil“ Nette a to tak, že keď hodnota v $someArray bola null pretypoval som to na prázdne pole. Ale Nette vyhadzuje výnimku keď je hodnota null.

Neviem či to nechať, alebo zjednotiť s pôvodnou implementáciou foreachu?

myslím, že by to asi správně mělo být stejné jako v normálním {foreach} lidi by se měli naučit si definovat proměnný a neházet do foreache co si zamanou … :)