Společný ErrorPresenter pro více modulů

fikusir
Člen | 25
+
0
-

Ahoj,

omlouvám se za duplicitu k tomuto https://forum.nette.org/…-vice-modulu, nicméně nepomohl.

Používám moduly a rád bych měl společný ErrorPresenter pro všechny moduly.

Pokud zadám dotaz na neexistující presenter, tak aktuální chyba je:

Nette\Application\InvalidPresenterException: Cannot load presenter ‚Error‘, class ‚App\Module\Presenters\ErrorPresenter‘ was not found. in C:\xampp\htdocs\portal\vendor\nette\application\src\Application\PresenterFactory.php:69 @ http://localhost/…l/www/ikjkkj

application:
	errorPresenter: Error
	mapping:
		*: App\Module\*\Presenters\*Presenter
		Error: App\Presenters\*Presenter

Fyzická struktura souborů:

app
	Modules
		Admin
		Front
	Presenters
		templates
			Error

ErrorPresenter.php je umístěný v app/Modules/Presenters

ErrorPresenter – jeho namespace:

namespace App\Presenters;

Cache promazána a systém stále vyhazuje chybu do logu, kterou jsem vypsal výše + uživateli zobrazí Error 500 (tu default Nette – pokud svoji upravím v app/Presenters/templates/Error, tak změny neobsahuje).

Moc díky!

fikusir
Člen | 25
+
0
-

Tak jsem to zdá se vyřešil. Třídy ErrorPresenter a Error4×xPresenter jsem zařadil do namespace App\Module\Presenters.

Přiznám se, že vůbec nerozumím tomu proč to tak musí být, ale funguje to.

Přijde mi, že apka ignoruje nastavení v common.neon pro errorPresenter.

David Matějka
Moderator | 6445
+
+1
-

Ahoj, mapování se nastavuje pro celé moduly a ne pro jednotlivé presentery. Takže tvoje mapování pro Error je zbytečné, jelikož tam takový modul nemáš a proto se použije generické mapování s *