Latte a n:if makro? Nechybí vám také?
- Landsman
- Člen | 152
Dneska jsem si říkal, že mi docela chybí n:if makro. Rád bych odehrál: foreach, podmínky pro zobrazení, classny v jednom tagu <li>, ale pořádně (asi) nemohu.
Příklad:
<ul class="nav navbar-nav">
<li n:foreach="$intersection as $i" n:class="col-xs-6, 'i-' . $iterator->getCounter(), $item->class" n:ifcontent>
{if 4 >= $iterator->getCounter() && false === stripos($i->link, $moduleName)}
<a href="{$presenter->generateLink($i->link, $i->param)}" {if $i->target}target="{$i->target}"{/if}>{_$i->title}</a>
{/if}
</li>
</ul>
Když napříklda 1. z položek vypadne díky podmínce až za <li>, tak se nezobrazí poslední, která by normálně měla, jelikož nesedí internator a také samozřejmě „i-internator“ classny nejdou po sobě.
Ideální stav by tedy bylo n:if makro.
Měl jsem takový pocit, že jej latte mělo nebo ne?
Editoval Landsman (27. 7. 2016 17:16)
- Landsman
- Člen | 152
Aha, skvěle. Já ho právě používal, ale zdálo se mi, že se nezpracovává, tak jsem mrknul na https://latte.nette.org/cs/tags a nenašel jsem ho tam.
Vypadá to lépe
<ul class="nav navbar-nav">
{var $c = 1}
<li n:foreach="$intersection as $i" n:class="col-xs-6, 'i-' . $c, $i->class" n:if="4 >= $c && false === stripos($i->link, $moduleName)">
<a href="{$presenter->generateLink($i->link, $i->param)}" {if $i->target}target="{$i->target}"{/if}>{_$i->title}</a>
{var $c = $c+1}
</li>
</ul>
Nakonec jsem čekal, že iterator bude reflektovat podmínky (nebude přičítat položku, kterou nezobrazím), tak jsem od něj jednoduše opustil…
Editoval Landsman (27. 7. 2016 17:35)
- Jan Mikeš
- Člen | 771
Jeste takovy tip pro zkraceni a mozna i zprehledneni:
<a href="{$presenter->generateLink($i->link, $i->param)}" {if $i->target}target="{$i->target}"{/if}>{_$i->title}</a>
{var $c = $c+1}
vs
<a href="{$presenter->generateLink($i->link, $i->param)}" n:attr="target => $i->target">{_$i->title}</a>
{php $c++}
Editoval Lexi (29. 7. 2016 7:36)