redirect ve zpracování formuláře
- jik
- Člen | 149
Zdravím,
pokouším se dopracovat obsluhu formuláře tak, aby určitá podoba dat ve
formuláři vrátila zpátky editování (takové složitější ověření
správnosti souboru dat na základě popisu položek v tabulce). Mám tedy
actionEdit
a renderEdit
, k tomu nějaký formulář
createComponentEditForm
a zpracování formuláře
editFormSucceded
. Tam se nakonec provede vyhodnocení a
v případě potřeby se dosud sestavená data uloží do souboru a následuje
návrat do formuláře
$this->redirect('Nemed:return', $fname);
prostřednictvím actionReturn
a renderReturn
. Tam
se formulář naplní daty ze souboru a předá k editování. Až sem je to
v pořádku, ale pokud nyní data opravím a odešlu, tak se nezačne
zpracovávat editFormSucceded
(jak bych očekával), ale znovu
actionReturn
.
V metodě createComponentEditForm
je řádek
$form->onSuccess[] = [$this, 'editFormSucceded'];
o kterém jsem se domníval, že určuje další cestu zpracování formuláře. Jako by ho však redirect přepsal. To je v takovém případě nutné vkládat nějaký další redirect? (a jaký?) Nebo kde by mohla být chyba?
- Marek Bartoš
- Nette Blogger | 1274
Možná sem raději hoď celý kód. Pokud však redirect voláš před tím, než se do form->onSuccess[] přiřadí callback nebo před tím, než se formulář zpracuje (zpracovává se mezi action a render, při volání handle metod), tak se na zpracování vůbec nedostane, redirect ukončuje okamžitě běh presenteru.
Editoval Marek Bartoš (18. 8. 2021 13:42)