Pojmenovanné proměnné v blocku define se po upgradu Nette předávají jako NULL

před rokem

Ahead
Člen | 3
+
0
-

Zdravím,

aktualizoval jsem z Nette 2.3 na 2.4 a přestaly mi fungovat define bloky v latte, např.:

{define mujBlock}
    {$mojePromenna1}, {$mojePromenna2}
{/define}

{include mujBlock, mojePromenna1 => $mojePromenna1, mojePromenna2 => $mojePromenna2}

Ve verzi 2.3 se vygenerovalo jako:

foreach ($_args as $__k => $__v) $$__k = $__v

Jenže ve verzi 2.4 se generuje:

list($mojePromenna1, $mojePromenna2) = $_args + [NULL, NULL, ];

Což moc nechápu. Dle PHP dokumentace funkce list bere z pole číselné indexy od 0, tj. do obou proměnných se přiřadí ony NULL hodnoty z druhého pole, protože $_args má stringové indexy.

Co s tím?

před rokem

David Matějka
Moderator | 5953
+
0
-

opravdu mas du definici bloku tak, jak pises? nemas tam nahodou neco jako {define mujBlock $mojePromenna1, $mojePromenna2}?

před rokem

Ahead
Člen | 3
+
0
-

Pardon, ano, mám to tak.
To je špatně?

před rokem

David Matějka
Moderator | 5953
+
0
-

ve starsi verzi nette se ty parametry ignorovaly, takze si je tam mel zbytecne – jen nette nezahaslilo zadnou chybu, ackoliv to byl v podstate syntax error.

od nette 2.4 se pres to nechavaji predavat parametry pozicne bez uvedeni jmena pri include:

{define mujBlock $promenna1}
{/define}
{include mujBlock $hodnotaPromenne1}

před rokem

Ahead
Člen | 3
+
0
-

Aha, díky moc :)