isLast(), isFirs()t jak je správně použít?
- KillPrd
- Začátečník | 110
Ahoj chtěl jsem použít v šabloně funkci která zjistí že je na konci
cyklu. Tedy isLast()
tot je muj zapis:
{if $iterator->isLast()} je posledni {/if}
Ale on nějak nefunguje ani {$iterator->getCounter()} stále vypisuje stejné číslo.
celé to mám takto:
<?php
{foreach $navi as $items}
{foreach $items as $value =>$key}
{$value}{if $iterator->isLast($navi)} {$iterator->getCounter()} {/if}
{/foreach}
{/foreach}
?>
Nevím zda ve verzi 2.0 proběhly nějaké změny nebo to mám špatně použité…
problém je že nemuže být ve dvou foreach když je v jednom tak to funguje jakmile to vložím do druhého tak už to nejde
Editoval KillPrd (18. 1. 2011 9:20)
- Vojtěch Dobeš
- Gold Partner | 1316
Metodě isLast()
není třeba nic předávat – pokud se
nemýlím, tak umí přijímat pouze číslo, které se pak chová jako
modulo.
- KillPrd
- Začátečník | 110
zda jsem to správně pochopil tak {$outerIterator = $iterator} vložím do
druhého foreach a pak používám
$outerIterator->getCounter(); ale to mi nefunguje
píše mi to
Fatal error: Method SmartCachingIterator::__toString() must not throw an exception in /Applications/XAMPP/xamppfiles/htdocs/boro/libs/Nette/Templates/Filters/TemplateHelpers.php on line 0
- Patrik Votoček
- Člen | 2221
{$outerIterator = $iterator}
je imho blbost když už tak už
{var $outerIterator = $iterator}
a imho:
{foreach $navi as $items}
{var $outerIterator = $iterator}
{foreach $items as $value => $key}
{* kdyby jsi to `{var $outerIterator = $iterator}` použil až tady tak si tam uložíš iterátor z tohohle nového foreache... *}
{$value}{if $iterator->isLast($navi)} {$iterator->getCounter()} {/if}
{/foreach}
{/foreach}
TIP: můžeš místo {if $iterator->isLast()}...{/if}
použít {if $iteragor->last}...{/if}
a nebo ještě
lépe {last}...{/last}