Jak dostat iterator do $this->global

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

Ahoj,

jak lze do promenne $this->global v sablone vlozit iterator z foreach nejak elegantneji nez pres jeho pouziti (viz kod nize)?

{foreach $day as $hour => $minutes}
 {$iterator->isFirst()}
 <tr n:if="$this->global->its[0]->isFirst()">
  {foreach $minutes as $seconds}
   <th>{$seconds}</th>
  {/foreach}
 </tr>
{/foreach}
CZechBoY
Člen | 3608
+
0
-

Na co to potřebuješ? Proč ti nestačí $iterator->isFirst(), případně uložení iteratoru do pomocné proměnné?

{foreach $day as $hour => $minutes}
 {var $dayIterator = $iterator}
 <tr n:if="$dayIterator->isFirst()">
  {foreach $minutes as $seconds}
    {var $minuteIterator = $iterator}
    <th>{$seconds}</th>
  {/foreach}
 </tr>
{/foreach}
ali
Člen | 342
+
0
-

Pomocna promenna je samozrejme mozna, jde mi spis o to, ze v latte ~2.3.0 jsem pouzival promennou $_l->its pro tyhle ty ucely, ktera je v aktualni verzi deprecated.

A pokud jsem to dobre pochopil, tak nahrada by mela byt prave promenna $this->global->its, kde se taky iterator uklada, ale az po jeho pouziti v sablone.

CZechBoY
Člen | 3608
+
0
-

@ali k čemu to vlastně používáš a proč nemůžeš použít ty dočasný proměnný?
Nikdy jsem tu property $_l nepoužil tak nevim jak se to tam skladuje a k čemu to je dobrý…

ali
Člen | 342
+
0
-

Ja nepsal, ze nemuzu pouzivat docasny promenny, jen jsem byl zvykly pouzivat jinaci reseni, tot vse :-).
A pouzivam to tehdy, kdyz chci v makru foreach pouzit iterator z rodicovskeho foreach.

V promenne $_l byli ulozeny iteratory z foreach, takze si mohl pouzivat jednotlive iteratory, bez deklarovani dalsich promennych, viz priklad:

{foreach $a => $b}
 {foreach $b => $c}
  {foreach $c => $d}
   {$_l->its[0]->getCounter()} {* iterator pole $a *}
   {$_l->its[1]->getCounter()} {* iterator pole $b *}
   {$_l->its[2]->getCounter()} {* iterator pole $c *}
  {/foreach}
 {/foreach}
{/foreach}
CZechBoY
Člen | 3608
+
+1
-

Není potom trochu bordel kterej iterátor je kterej? Někdo by si mohl myslet, že to je LIFO, někdo FIFO fronta…
A když budeš chtít přidat nějakou další smyčku v nějaký úrovní tak budeš muset přepsat všechny indexy :-/.