Nefunkční metody presenteru v továrně

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

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

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)

Paimutan
Člen | 33
+
0
-

Jo, bylo to ono :) díky moc