Bug or feature – Flash zprávy
- Ola
- Člen | 385
Zdravím, tak sem si řekl, že testnu flash zprávy, vzal sem tedy skript pro přihlašování (na který v aplikaci přesměruji s backlinkem z výchozího presenteru) .. ale:
kód, který se provede, když uživatel zadá správné údaje:
$this->flashMessage("Byl jste úspěšně přihlášen.", "success");
$this->getApplication()->restoreRequest($this->getParam('backlink'));
$this->redirect(":Admin:Dashboard:");
mělo by to fungovat tak, že když je k dispozici backlink tak to přesměruje zpět na dashboard, tady ale, přestože tu zprávu přidám předtím, to tu zprávu nevypíše (v šabloně není nastavena $flash).. bug or feature?
ještě dodám, když zakomentuji obnovení requestu (tedy vždy dojde k přesměrování na :Admin:dashboard:default) tak je vše v poho..
Editoval Ola (22. 12. 2008 16:16)
- romansklenar
- Člen | 655
Jak to chápu já, rozdíl je v tom jak jsou jednotlivá přesměrování zpracovány:
restoreRequest()
vyhodí při svém vykonáváníForwardingException
takže se aplikace ukončí aniž by dál přenášela nějaké svoje vnitřní stavy – zpráva zanikneredirect()
regululérně ukončí aplikaci a provede přesměrování, kde jsou zachovány vnitřní stavy (? – nejsem si úplně jist jak to přesně je), takže vidíš svou zprávu
To co popisuješ se dá hezky simulovat v akrabatu:
public function loginFormSubmitted($form)
{
try {
$user = Environment::getUser();
$user->authenticate($form['username']->getValue(), $form['password']->getValue());
if ($user->isAuthenticated()) $this->flashMessage('Byl jste úspěšně přihlášen.', 'success');
// $this->getApplication()->restoreRequest($this->backlink); // nevidím zprávu
$this->redirect('Dashboard:'); // vidím zprávu
} catch (AuthenticationException $e) {
$form->addError($e->getMessage());
}
}
Editoval romansklenar (6. 1. 2009 1:54)
- David Grudl
- Nette Core | 8218
Ola napsal(a):
mělo by to fungovat tak, že když je k dispozici backlink tak to přesměruje zpět na dashboard, tady ale, přestože tu zprávu přidám předtím, to tu zprávu nevypíše (v šabloně není nastavena $flash).. bug or feature?
Vím o tom, řešení hledám.
- jazby
- Člen | 44
David Grudl napsal(a):
Ola napsal(a):
mělo by to fungovat tak, že když je k dispozici backlink tak to přesměruje zpět na dashboard, tady ale, přestože tu zprávu přidám předtím, to tu zprávu nevypíše (v šabloně není nastavena $flash).. bug or feature?
Vím o tom, řešení hledám.
Zdravím, mohl bych se zeptat, jestli se již tento problém vyřešil? Používám verzi nette 2 alpha 2 a stále to flash messages při restoreRequest nepředává. Popřípadě je nějaké jiné řešení? (tedy kromě toho že budu zasahovat do srdce nette a přepisovat fci restoreRequset dle článku https://forum.nette.org/…flashmessage#…) Na fórech jsem ho nenašel. Díky.
Editoval jazby (1. 4. 2011 15:30)
- Filip Procházka
- Moderator | 4668
Stále to není opravené, doufám že u pitvání Nette budeš alespoň skřípat zubama :)
Btw čistější by bylo si storeRequest
a
restoreRequest
vyčlenit do vedlejší třídy a upravit to tam
(až se to změní v nette bude ti tvoje řešení fungovat pořád
stejně)