Předání parametrů v makru layout

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Václav Pávek
Backer | 100
+
0
-

Chtěl bych se optat zda někdo implementoval řešení kdy lze v makru layout předat parametry nadřazené šabloně. Bloky jsou nevhodné pokud si potřebuji předat objekt, ve kterém změnilo view nějakou hodnotu. Spíše bych uvítal nějaký sdílený data objekt který by byl dostupný během celého procesu renderování tj. abych si ve view mohl nadefinovat proměnné nebo změnit v již předané proměnné a tyto hodnoty by byly dostupné i v layoutu.

Zjednodušená situace:

  1. šabloně nadefinuji proměnné a v některých je objekt, který vypisuji na layoutu
  2. view má přístup k proměnné/objektu a zavolá nějakou funkci, která změní stav objektu, view si nastavuje layout
  3. renderování layoutu nebo volání dalšího layoutu + výpis hodnot v objektu

Šablonovací systémy které toto umí, ale rád bych zůstal u Latte:

Díky všem za pomoc a případné nápady. Prosím, neřešte zda je toto chování správné.

janpecha
Backer | 75
+
0
-

Mělo by stačit v šabloně nastavit „globální“ proměnnou (mimo bloky) a tato proměnná by měla být dostupná v layoutu (i přes více úrovní dědění):

default.latte:

{var $templateVar = "ahoj"}

{block content}
content

@layout.latte:

<html>
<body>
	{$templateVar}
	{include #content}
</body>
</html>

Editoval janpecha (3. 11. 2015 7:34)

Václav Pávek
Backer | 100
+
0
-

Super, díky za odpověď. To mě nenapadlo to dát mimo blok.