[2.0.12] ErrorPresenter v modulu

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
HappyFace
Člen | 162
+
0
-

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
+
0
-

:( 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)