Error layout se nevloží do @layout.latte
- MedaKeR
- Člen | 14
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