Chyba při submitu formuláře (přesměrovat? jak vrátit uživateli data?)
- Blizzy
- Člen | 149
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?
- jakubkulhan
- Člen | 55
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
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());
}
}