Latte – makro pro první průchod splňující podmínku

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
kahi
Člen | 32
+
0
-
{foreach $items as $item}
	{once $item->condition}<h3>Ostatní</h3>{/once}
	…
{/foreach}

jako ekvivalent za

{var once = false}
{foreach $items as $item}
	{if !$once && $item->condition}<h3>Ostatní</h3>{var $once = true}{/if}
	…
{/foreach}

Editoval kahi (7. 9. 2012 15:57)

uestla
Backer | 779
+
0
-
{if $iterator->first && $item->condition}

?

hrach
Člen | 1819
+
0
-

uestla: nene, toto je nezavisle na iteratoru, jde o to, ze se obsah ifu provede jen jednou, ikdyz podminka vyhovuje vicekrat. je jedno, v jake iteraci.

uestla
Backer | 779
+
0
-

Rozumím, nepochopil jsem, děkuji, omlouvám se :-)

jtousek
Člen | 951
+
0
-

To má imho problém z hlediska implementace – jak proměnnou $once pomocí makra deklarovat už před cyklem, kde bylo makro použito místo až v něm? I když, asi by to šlo vyřešit pomocí $iterator, isset() a unset().

Druhá věc je, že by to stejně jako $iterator mělo problém s vnořenými cykly – to je asi jediná věc, co mi na Latte vadí.

Editoval jtousek (10. 9. 2012 3:18)

Filip Procházka
Moderator | 4668
+
0
-

Nemělo by to problém, když budeš podmínku kontrolovat pro každý unikátní spl_object_hash($iterator)

kahi
Člen | 32
+
0
-

Související feature (request): také mi zbytečně nepohodlné přijde psaní takovýchto případů:

{foreach $articles as $article}
	{if $article->měsíc_publikace != měsíc_publikace_předchozího}
		<h2>{$article->pubDate|date:F}</h2>
	{/if}

	<h3>{$article->title}</h3>
	<p>{$article->perex}<p>
	…
{/foreach}

Nebo alespoň nevím jak to psát bez vytváření dočasných proměnných.

Filip Procházka
Moderator | 4668
+
0
-

Takže kdo pošle pullrequest s implementací a testy? ;)

David Ďurika
Člen | 328
+
0
-

HosipLan napsal(a):

Takže kdo pošle pullrequest s implementací a testy? ;)

no predsa ten kto sa pyta :)