Společný ErrorPresenter pro více modulů
- emmil
- Člen | 26
Zdravím, příjde mi, že je to hodně banální věc, ale nedaří se mi ji rozchodit.
Našel jsem několik otázek podobného typu:
https://forum.nette.org/…r-v-modulech
http://www.egoblog.cz/…-v-modulech/
a nebo
https://forum.nette.org/…o-dva-moduly
Moje struktura aplikace je následující:
app
FrontModule
AdminModule
Tohle je diskutovaná část mého config.neon:
application:
errorPresenter: Error
mapping:
*: *Module\*Presenter
Zkoušel jsem si třeba vytvořit nový modul s názvem
ErrModule
do kterého jsem dal ErrorPresenter.php
a
Error4xxPresenter.php
a pak v configu
errorPresenter: Err:Error
. A pořád mi to na produkčním
vyhazovalo chybu chybu:
Cannot load presenter 'Error', class 'ErrorPresenter' was not found.
Pak jsem ještě zkusil v bootstrapu přímo nastavit tohle:
$container->getService('application')->errorPresenter = 'Err:Error';
Chyba se změnila na:
Cannot load presenter 'Error4xx', class 'Error4xxPresenter' was not found.
Tak jsem si řekl aspoň posun, ale dál jsem se už nedostal.
Nechci do každého modulu rvát zvlášť ErrorPresentery (a tím duplikovat kód), chci mít prostě tuto záležitost na jednom místě.
- emmil
- Člen | 26
Tak jsem se posunul ještě o trochu dál nebo spíše k výsledku.
Prohlídl jsem si letmě kód v ErrorPresenter.php
a všiml jsem si
následujícího řádku:
return new Nette\Application\Responses\ForwardResponse($request->setPresenterName('Error4xx'));
Tak jsem si řekl proč nezkusit přidat Err:
před
Error4xx
a funguje.
Takže mě z toho hned napadá jeden doplňující dotaz:
Proč musím v boostrap.php
nastavovat Err:Error
presenter jako jsem nastínil v mém tématu výše když to samé by přece
mělo fungovat v config.neon
, ale nefunguje.
Editoval emmil (22. 4. 2016 23:12)
- Jiří Nápravník
- Člen | 710
Máš to application v neon pod sekci nette?
já mám tohle a bez problémů:
nette:
application:
errorPresenter: Core:Error
- jiri.pudil
- Nette Blogger | 1032
Zařazení v sekci nette
je potřeba ve 2.2. V Nette 2.3 už
by to mělo fungovat i bez toho.
- emmil
- Člen | 26
@jiri.pudil @DavidGrudl Používám nejnovější verzi
nainstalovanou přes composer, takže 2.3 a bez nette:
to
nefungovalo.
EDIT:
Promazal jsem ještě jednou cache (udělal jsem to už několikrát
předtím, ale asi ne ve správně kombinaci :)) a začalo to fungovat i bez
nette:
takže moje blbost, díky moc za reakce.
Editoval emmil (23. 4. 2016 13:47)