Chyba při submitu formuláře (přesměrovat? jak vrátit uživateli data?)

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

Jak postupovat pokud ve funkci formSubmitted nastane chyba? Myslím tím například nějaký problém s modelem a podobné neočekávané chyby.

Pravidlem je ať se děje cokoliv (kromě ajaxu), tak po submitu přesměrovat. Jenže pokud přesměruju, uživatel ztratí všechna data, která do formuláře vložil (což by se bez redirectu nestalo). Pokud nastane chyba, k čemu mu bude, když mu vyskočí hezká flash zpráva s odůvodněním chyby, když svoje data už neuvidí.

Jak to tedy udělat? Přesměrovat i v případě chyby nebo nepřesměrovat? Jak vrátit uživateli jím vyplněný formulář i po redirectu?

stpnkcrk
Generous Backer | 190
+
0
-

A co ?

<?php
$form->addError(...);
?>
jakubkulhan
Člen | 55
+
0
-

Blizzy napsal(a):

Jak to tedy udělat? Přesměrovat i v případě chyby nebo nepřesměrovat? Jak vrátit uživateli jím vyplněný formulář i po redirectu?

V případě chyby nepřesměrovávat. Přesměrovává se, aby se zamezilo opětovnému zpracování již úspěšně zpracovaných dat.

Editoval jakubkulhan (2. 9. 2009 17:27)

Ondřej Mirtes
Člen | 1536
+
0
-
public function formSubmitted(AppForm $form) {
	try {
		$values = $form->getValues();
		$this['model']->do($values['field1'], $values['field2'], ...);
		$this->flashMessage('Success!');
		$this->redirect('this');
	} catch (SomeModelExcepion $e) { //výjimka, kterou vyhazuje model
		$form->addError($e->getMessage());
	}
}