Předání proměnné snippetu uvnitř bloku
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- uestla
- Backer | 799
Ahoj,
v jedné šabloně mám definované bloky, a uvnitř jednoho je snippet. V něm pracuji s proměnnou, kterou bych rád předal zvenčí. Konkrétně
# @blocks.latte
{define items}
<div n:snippet="items">
{foreach $items as $item}
{/foreach}
</div>
{/define}
# default.latte
{includeblocks '@blocks.latte'}
{include #items, items => $myItems}
Tím, že se snippety konvertují na funkce, zakřičí to, že nezná
proměnnou $items
.
Existuje nějaký způsob, jak mu proměnnou předat?
Děkuji.
- David Matějka
- Moderator | 6445
nejde to – a z dobreho duvodu.
V ajax modu s invalidovanym snippetem items by se proved pouze ten kod ve
snippetu a $items
by neexistovalo.
Proto jdou ve snippetech pouzivat pouze promenne, ktere jsou nastavene
z presenteru…
Editoval matej21 (8. 1. 2015 22:31)
- uestla
- Backer | 799
Vyřešil jsem to přidáním bloku přímo pro položky a pak dvěma bloky – jeden pro snippet a druhý pro právě požadované vkládání jinde:
# @blocks.latte
{define snippItems}
<div n:snippet="items">
{include #itemlist, items => $items}
</div>
{/define}
{define items}
<div>
{include #itemlist, items => $items}
</div>
{/define}
{define itemlist}
{foreach $items as $item}
{/foreach}
{/define}
# default.latte
{includeblocks '@blocks.latte'}
{include #items, items => $myItems}