Počítání vstupu do blocku (rekurze)

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

V šabloně vkládám rekurzivně bloky. A potřebuji nějak spočítat, pokolikáté se ten blok vykresluje

{block}
	{include this}
	{$counter} //tady potrebuji nejak globalne
{/block}

Jde to nějak? Jak jde o rekurzi, je to problém, protože se mi to vždy vynuluje. zkoušel jsem definovat jak před blockem, tak v blocku, i čachr s global… Nic.

Jediné co mi fungovalo, udělat si přepravkovou třídu se statickou proměnnou. Ale není něco lepšího?

Jan Tvrdík
Nette guru | 2595
+
0
-
{include this, counter => ($counter + 1)}

Spočítá hloubku, což je doufám to co chceš.

Jiří Nápravník
Člen | 710
+
0
-

To není, co potřebuji. Já potřebuji opravdu pořadí, pokolikáté to vlezlo do toho blocku.

Zkrátka vypisuji strom, a pod pátou položkou (je jedno v jakém zanoření, potřebuji pořadí) vykreslit reklamu.

CZechBoY
Člen | 3608
+
0
-

Ta statická proměnná je problém? Nešlo by jednoduše použít

self::$counter = isset(self::$counter) ? self::$counter + 1 : 1;

Editoval CZechBoY (9. 11. 2015 19:04)

Jiří Nápravník
Člen | 710
+
0
-

V šabloně to asi nejde

Cannot access self:: when no class scope is active
David Matějka
Moderator | 6445
+
+1
-

Bude stacit klasicky stdClass objekt

(object) ['value' => 1]

a predavat ten a pak jen $counter->value++

Jiří Nápravník
Člen | 710
+
0
-

@DavidMatějka díky, funguje! měl jsem za to, že by proměnná musela být statická a nemusí:)