Více layoutů vs. moduly a základní struktura

malinamar
Člen | 12
+
0
-

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)