Bug or feature – Flash zprávy

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

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

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 zanikne
  • redirect() 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 | 8111
+
0
-

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

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

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ě)

jazby
Člen | 44
+
0
-

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ě)

však jsem to tak udělal. Představa že bych při aktualizaci musel zjišťovat co jsem upravoval (a kde) …

Díky

David Grudl
Nette Core | 8111
+
0
-

fixed