Pojmenovanné proměnné v blocku define se po upgradu Nette předávají jako NULL
- Ahead
- Člen | 3
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?
- David Matějka
- Moderator | 6445
opravdu mas du definici bloku tak, jak pises? nemas tam nahodou neco jako
{define mujBlock $mojePromenna1, $mojePromenna2}
?
- David Matějka
- Moderator | 6445
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}