snippetArea, předávání proměnných do inkludované šablony
- Semik
- Backer | 135
Zdravím,
aktualizuji jeden projekt z Nette 2.3 na 2.4 a mám problém s přenášením proměnných deklarovaých v šabloně do inkludované šablony, která je obalena do snippetArea.
{var $freeTrans = $isFreeTransport($price->number())}
{snippetArea wrapperDetails}
{include '_details.latte'}
{/snippetArea}
{*_details.latte*}
{if $freeTrans}
...
Vyskočí notice a $freeTrans nezná.
Nenašel sem v návodu pro migraci, že by toto měl být bc break.
Nefunguje ani explicitní předání parametru do include:
{var $freeTrans = $isFreeTransport($price->number())}
{snippetArea wrapperDetails}
{include '_details.latte', freeTrans => $freeTrans}
{/snippetArea}
protože už ve vygenerovaném wrapperu ta proměnná při extract není, aby
se mohla předat.
Předělat všechny takto deklarované proměnné z šablony do presenteru je
nyní docela komplikované.
Díky za radu.
- David Grudl
- Nette Core | 8218
Mě dost zaráží, že by tohle ve 2.3 fungovalo. Není možné, že se to bere odjinud?
- Michal Kumžák
- Člen | 106
Já to používám tak, že když includuji uvnitř snippetArea, tak ten include je sám snippet, takže pak invaliduji jak snippetAreu, tak ten snippet uvnitř. A takhle mi to funguje.
hlavni.latte
{snippetArea hlavni}
{include vedlejsi.latte}
{/snippetArea}
vedlejsi.latte
<div n:snippet="vedlejsi">
.....
.....
</div>
a invalidace
$this->redrawControl('hlavni');
$this->redrawControl('vedlejsi');