Vložení jedné šablony do druhé – nepředávají se proměnné

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
fary
Člen | 155
+
0
-

Ahoj. Mám problém s includováním šablon a rád bych se vás zeptal, jestli něco nedělám špatně.

Mám 2 šablony:

  • template.latte
  • variables.latte

Ve variables.latte mám:

{var $text = 'nějaký text'}

V template.latte mám:

{include variables.latte}
{dump $text}

Ale místo toho, aby se mi v template.latte zobrazil v laděnce dump proměnné $text, tak mi to vypisuje chybu, že ta proměnná tam není, i když jsem ji tam vložil tím includovaným souborem variables.latte.

Mohl by mi prosím někdo poradit, jak to má správně být?

JanB
Člen | 21
+
0
-

Ak spravne chapem prelozene templaty v temp\cache\_Nette.FileTemplate, tak kazdy blok je uzavrety vo funkcii. „Nefunguje“ ti to potom preto lebo premenna definovana pomocou {var} sa prelozi do lokalnej premennej funkcie. Skor je to teda „feature“ a nie „bug“.

Co mozes urobit je nadefinovat si premennu v prezenteri cez $this->template->text=‚nejaky text‘ a tu potom pouzit v oboch sablonach. Tiez si myslim ze definovanie premennych je v prezenteri cistejsie.

Ak ale chces prvu premennu naozaj nadefinovat v prvom template, mohol by si to skusit cez prezenter {$presenter->text=‚nejaky text‘} (mozno by slo aj {$presenter->template->text=‚nejaky text‘}) a potom k nej z druhej template pristupovat (ako {$presenter->text} alebo len {$text}), ale myslim ze je to dost „nepekne“ riesenie veduce k „spaghetti“ kodu… (a v buducnosti stratenim casu /svojho alebo niekoho ineho/ zistovanim kde sa ta premenna v druhej template nabrala…)

Editoval JanB (5. 10. 2013 6:39)

newPOPE
Člen | 648
+
0
-

@fary tu to mas cele vysvetlene https://latte.nette.org/cs/tags#…

A mam pocit, ze predavanie premennych ide len jednym smerom a to od „velkych“ sablon k mensim. Nevidim moc zmysel chciet premenne predava z malych sablon von co je presne tvoj pripad :-).

Editoval newPOPE (5. 10. 2013 16:36)