@layout pro všechny moduly
- mysak9
- Člen | 18
Zdravím,
potřeboval bych prosím poradit s načítáním @layoutu pro všechny moduly.
Struktura vypadá následovně
app/
--adminModule -- má svůj, zde je to v pořádku
--FrontedModule
--BasketModule
--config
--presenters -- zde se nachází BasePresenter
--templates
-@layout
V base se snažím upravit formatLayoutTemplateFiles, ale nefunguje mi to. Prosím o radu, přikládám moje nastavení:
public function formatLayoutTemplateFiles()
{
$layoutFiles = parent::formatLayoutTemplateFiles();
$dir = dirname($this->getReflection()->getFileName());
$layoutFiles[] = "$dir/presenters/templates/@layout.latte";
return $layoutFiles;
}
Tedy pro basket,fronted module potřebuji načítat @layout co mám u BasePresenteru(presenters/templates/@layout)
Editoval mysak9 (9. 3. 2017 14:53)
- David Matějka
- Moderator | 6445
co znamena „nefunguje mi to“? ale rekl bych, ze tam mas mit
jen "$dir/templates/@layout.latte";
- mysak9
- Člen | 18
Nezobrazí se vůbec nic, jako by latte vůbec nenačítalo. Načte se jen čistá stránka. Pokud pak zadám konkrétní stránku např http://localhost/…ategory/show?… tak se zobrazí pouze šablona show.latte, ale už ne @layout s headrem apod..
Cestu jak uvádíš jsem zkoušel, ale taky bez výsledku.
- Martk
- Člen | 661
Proměnná dir vede na složku aktuálního volaného presenteru. Při akci Basket:default, kde BasketPresenter má cestu např. app/FrontModule/presenters/BasketPresenter.php obsahuje proměnná dir cestu app/FrontModule/presenters. Potřebuješ tohle (nebo si předej proměnnou s cestou appDir), pokud je tento kód v BasePresenteru:
public function formatLayoutTemplateFiles()
{
$layoutFiles = parent::formatLayoutTemplateFiles();
$dir = dirname($this->getReflection()->getFileName());
$layoutFiles[] = "$dir/presenters/templates/@layout.latte";
$layoutFiles[] = __DIR__ . "/templates/@layout.latte";
return $layoutFiles;
}
Příště doporučuji před return dát tohle:
dump($layoutFiles);
porovnat s předpokládaným výstupem a hned
zjistíš, kde je chyba ;)