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 | 796
+
0
-

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
+
0
-

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 | 796
+
0
-

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}