[2.0.12] ErrorPresenter v modulu
- HappyFace
- Člen | 162
Ahojte,
aplikoval som errorPresenter v modulu ale podla vsetkeho nieco nefunguje ako
ma a neviem sa dopatrat k chybe.
Ide o klasicku stavbu projektu
\BasePresenter<-ProjectModule\ErrorPresenter
v Base presentery mam
/** @persistent */
public $lang;
ale uz do error view sa nedostane :(
este je tu aj 2. problem a to je generovanie odkazov
n:href="Homepage:index"
mi vygeneruje:
href="error: No route for Project:Homepage:index(lang=en)"
samozrejme aj ten lang je tam zly lebo v routru ak nieje lang, zadavam ako default CS
v aplikacke vsetko fuguje ako ma .. dokenca ked si aj rucne zavolam ten error presenter „error/default“ jazyk aj linkovanie funguje .. kde robim chybu ?
PS: kukal som na stranku a tam pisu, ze to bolo opravene , no evidentne asi nie "":https://forum.nette.org/…ovani-odkazu
Editoval HappyFace (16. 10. 2013 13:56)
- HappyFace
- Člen | 162
:( to vazne kazdemu toto ide alebo nikto nikdy nepotreboval mat napriklad na 404-ke odkaz niekde do projektu + este pekne lokalizovany
ja som uz skusal premiestnit vsetko z basePresenteru priamo do ErrorPresenteru a tam konecne bolo mozne prepnut jazyk ale zial nie cez router ale natvrdo rucne
este prist nato ako okaslat ten n:href a bude hadam sa najde niekto kto mi povie preco sa v tom presenteru neprenesu parametre a vsetko ostatne pre spravne vykreslenie templaty
EDIT:
ok tak vyriesene.. pri vytvarani Error requestu sa do forwartu nepredavaju
povodne hodnoty, neviem ci je som to urobim spravne ale predpokladam, ze
k tomuto erroru neexistuje nejaka duplicitna methoda kde by som to mal este
fixnut.. uz len z dovodu ze som zasiahnul do jadra je to zle, co si
uvedomujem
moj fix: v Nette\Application\Application oprava na riadku
#riadok 164:
- $this->presenter->forward(":$this->errorPresenter:", array('exception' => $e));
+ $this->presenter->forward(":$this->errorPresenter:", array_merge(array('exception' => $e), (is_null($request) ? array() : $request->getParams())));
#riadok 172:
- array('exception' => $e)
+ array_merge(array('exception' => $e), (is_null($request) ? array() : $request->getParams()))
pre moju potrebu je to momentalne funkcne hadam niekomu pomoze tento hotfix
UPDATE:
nedalo mi to spat ako som to prasacky editoval v jadre, tak som vyskusal si
v conf.neon nastavit services: application: MojaApplication, ktora dedi od
povodnej application.Zdasa ze tento pristup by tu mohl fungovat :) Teraz uz tu
mozem „cisto a bezpecne“ editovat methodu run(), ktora je naozaj priserne
velka :( a urcite by jej nazaskodil refaktor .. 100 riadkov na methodu je moc.
Narychlo som presiel strukturu tej class appplication a vidim tu zadrhel
s private premennymi a finalkou, takze asi si to necham ako TODO ked bude nato
cas sa stym pohrat
Editoval HappyFace (17. 10. 2013 10:06)