Vložení jedné šablony do druhé – nepředávají se proměnné
- fary
- Člen | 155
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
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
@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)