Nefunkční metody presenteru v továrně
- Paimutan
- Člen | 33
Ahoj,
v Nette 2.4 v továrně na formulář volám (v místě zpracování
formuláře): $this->presenter->flashMessage(...)
a pak
redirect. Po redirectu se message nevypíše. Stejně tak nefunguje
$this->presenter->redirect(...)
(a musím přesměrovávat
pomocí Header()). Presenter v this->presenter je, funguje např
$this->presenter->link(…).
Čím to může být?
EDIT: dodal bych, že v šabloně flashMessages vypisuju, takže pokud flashMessage zavolám přímo v presenteru, tak se hláška zobrazí.
Editoval Paimutan (22. 8. 2016 15:29)
- Barvoj
- Člen | 60
nefunguje $this->presenter->redirect(…)
nemáš okolo toho try-catch?
try {
...
$this->presenter->redirect(...)
} catch (\Exception $ex) {
...
}
redirect vyhazuje AbortException a jestli ji odchytis tak se redirect neprovede.
V takovém případě to musíš upravit na:
try {
...
$this->presenter->redirect(...)
} catch (\Nette\Application\AbortException $ex) {
throw $ex;
} catch (\Exception $ex) {
...
}
přesměrovávat pomocí Header()
Předpokládám že nepřidáváš do url parametr _fid? flash message se
uklada do session a mezi requesty se prenasi id flash message aby se pak mohla
ze session ziskat. Presenter::redirect
tento parametr automaticky
nastavuje.
Jinými slovy vyřeš nefunkční Presenter::redirect
a flash
message ti budou fungovat taky.
Editoval Barvoj (22. 8. 2016 16:37)