Error layout se nevloží do @layout.latte

MedaKeR
Člen | 8
+
0
-

Ahoj, když mi vyskočí chybová hláška (404 a jiné), tak se zobrazí jen samotná šablona, ne šablona chyby ve výchozím layoutu.
Mám násleudjící adresářovou strukturu

app/
├── Modules/
│   ├── Admin/
│   │   ├── Presenters/
│   │   │   ├── DashboardPresenter.php
│   │   │   └── templates/
│   └── Front/
│       └── Presenters/
│           ├── ErrorPresenter.php
│           ├── Error4xxPresenter.php
│           └── templates/
│                └── Error/
|                     └── 404.latte

V common.neon mám mapping nastavený jako *: App\Modules\*\Presenters\*Presenter.
Výchozí layout se nachází ve složce \App\Modules\templates\@layout.latte.

Oba ErrorPresentery musí mít (aby to fungovalo) namespace App\Modules\Presenters; (s ...\Front\Presenters... to hlásilo chybu že Err presenter neexistuje.
Zároveň v Error4xxPresenteru musím načítat template chyb jako

	public function renderDefault(Nette\Application\BadRequestException $exception): void
	{
		$file = __DIR__ . "/../templates/Error/{$exception->getCode()}.latte";
		$this->template->setFile(is_file($file) ? $file : __DIR__ . '/../templates/Error/4xx.latte');
	}

A v template chyby je {block content}.

V routeru pak routuju všechny chyby na Front modul pomocí

	$router->withModule("Front")
		->addRoute('<presenter>/<action>', 'Homepage:default');

Většinu rozdělení do modulů jsem dělal podle návodů na webu (včetně adresářové struktury).

Ještě stojí za zmínku „rendered templates“ z tracy
Pro Error:

...\Modules\Front\Presenters\..\templates\Error\404.latte php

Pro jakýkoliv jiný template:

...\Project\app\Modules\User\templates\Homepage\default.latte php
	└  extends ...\github\Project\app\Modules\templates\@layout.latte
		└  import ...\Project\app\Modules\templates\Default\footer.latte
MedaKeR
Člen | 8
+
0
-

Vyřešeno, stačilo přepsat metodu formatLayoutTemplateFiles() aby hledala layout ve správném místě.