Více layoutů vs. moduly a základní struktura
- malinamar
- Člen | 12
Zdravím, mám otázku ohledně nastavení layoutů v modulech.
Mám strukturu v configu:
application:
errorPresenter: Error
mapping:
*: App*Module\Presenters*Presenter
V aplikaci mám např. toto:
app\modules\landing\presenters\HelpPresenter.php
app\modules\landing\presenters\templates\Help.latte
a zároveň mám i:
app\presenters\BasePresenter.php
app\presenters\HomepagePresenter.php
app\presenters\templates\Homepage\default.latte
app\presenters\@layout.latte
app\presenters\@landingLayout.latte
A teď o co mi jde. Jak Help tak Homepage presentery dědí z BasePresenteru, kde nastavuji layout. A to takto:
protected function startup() {
parent::startup();if (in_array($this->getName(), [„Homepage“, „Landing:Help“])) {
$this->setLayout(‚landingLayout‘);
}
}
Pak dále nastavení souborů layoutů:
public function formatLayoutTemplateFiles() {
$layouts = parent::formatLayoutTemplateFiles();
$appDir = $this->context->getParameters()[„appDir“];
$layouts[] = "$appDir/presenters/templates/@layout.latte";
$layouts[] = "$appDir/presenters/templates/@landingLayout.latte";
return $layouts;
}
Problémem je, že se mi do Homepage promítne landingLayout, ale do Landing:Help ne. Pokud do ifu, kde selectuji presentery, kde se má nastavit @landingLayout.latte přidám presenter ze staré struktury, tak to funguje. Pokud přidám z některého z modulů, tak se načítá @layout.latte.
Netušíte někdo v čem by mohl být zakopaný pes? Když si dám vypsat $this->getLayout(); v HelpPresenteru, tak dostanu správně landingLayout. Tipuji, že mám špatně někde adresy, ale netuším kde.
Editoval malinamar (14. 5. 2021 9:57)