Nefunkční @layout.latte v zanorených moduloch

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

Ahojte,

Prekopávali a upratovali sme troška systém a zanárali niektoré moduly do seba a v jednom zo zanorených modulov som narazil na problém, že šablony už nemajú @layout.latte, ako keby sa nevedel nájsť, alebo sa hľadá niekde inde, skrátka vypisuje sa iba šablona…

Skúšal som pre celé AdminModule prostredie nastaviť:

<?php
public function startup() {
	parent::startup();
	/**
	* kod
	*/
	$this->setLayout("layout"); // vložil som @layout.latte vedľa presentra a skúšal rôzne variácie a nič :-\
	$this->setLayout("@layout.latte");
	$this->setLayout("layout.latte");
}
?>

Neviete kde je pes zakopaný, resp. prečo v zanorených moduloch už @layout sa nedokáže nájsť?

Ďakujem :)

Jan Mikeš
Člen | 771
+
+1
-

Já osobně mám pro zanořené moduly vždy vlastní @layout.latte a ve většině případech chci, aby dědil layout rodičovského modulu a musím v něm uvádět

{extends '../../templates/@layout.latte'}

Záleží samozřejmě na adresářové struktuře, já používám:
/app/modules/ApplicationModule/templates/@layout.latte
/app/modules/ApplicationModule/UserModule/templates/@layout.latte

PS: pro nastavení layoutu v presenteru si myslím, že bude platit to samé → lze to jednoduše ověřit pomocí https://api.nette.org/…ter.php.html#…

Editoval Lexi (5. 9. 2016 21:56)

iNviNho
Člen | 352
+
0
-

Mam to presne takisto az na to ze pod hlavnym modulom mam este zlozku modules pre vacsiu prehladnost, lebo sa tam este aj ine foldre.

Ano, toto riesenie poznam, ale nepaci sa mi extendovat v kazdej sablone… je to pracne a pre mna zbytocne, kedze kazda sablona v templates bude mat rovnaky @layout :-/ rad by som to niekde natvrdo zadal a finitka

iNviNho
Člen | 352
+
0
-

Aj ked asi rozumiem preco uz v zanorenych zlozkach nie je, ale tu by sa mi to siklo :-/

Jan Mikeš
Člen | 771
+
+2
-

Myslím že nejjednodušší a nejefektivnější cesta jak docílit požadované funkcionality je upravit si chování https://api.nette.org/…ter.php.html#… jak jsem psal výše.

iNviNho
Člen | 352
+
0
-

Ďakujem za nasmerovanie, včera som si nakoniec urpavil(prepísal) metódu findLayoutTemplateFile()

<?php
public function findLayoutTemplateFile() {
	return $this->dirService->getAppDir() ."\AdminModule/templates\@layout.latte";
}
?>
CZechBoY
Člen | 3608
+
0
-

@iNviNho to je internal metoda, tu bych radši nepřepisoval… Přepiš radši tu formatLayoutTemplateFiles, která vrací pole (ty tam teda vrátíš jen pole o délce 1).