Formulář – dvě odeslání – každý s jinou akcí a jinou zobrazenou stránkou
- Webster.K
- Člen | 212
Zdravím všechny, řeším drobnost. Potřebuji udělat formulář, který na konci místo tlačítka uložit bude mít tlačítko „uložit a vrátit se zpět“ nebo „uložit a pokračovat v editaci“.
Je mi jasné, že ve formuláři musím mít 2×, s pokaždé jiným názvem
$form->addSubmit('parametry')
, a pak na konci budu mít něco jako
$form->onSuccess[] = [$this, 'processForm'];
Tady začíná můj první problém. Jak dokážu zjistit, který submit to odeslal? Vím že druhý parametr je ono zpracování, ale netuším, jak poznat, přes co bylo odesláno. Druhá část se týká presenteru, kde vytvářím komponentu. Tam mám kód:
protected function createComponentNovaKnihaForm() {
$form = $this->factoryNovaKniha->create();
$form->onSuccess[] = function ($form) {
$form->getPresenter()->redirect('Kniha:default');
};
return $form;
}
Jak z toho dokáži přesměrovat někam jinam? Řešil bych to asi IFem, kde bude odeslaný tím konkrétním submitem, ale je to určitě nějak navázáno na předchozí část dotazu. Všem děkuji za případné rady :)
- Felix
- Nette Core | 1247
Tedka koukam, ze o tom neni zminka v docce (https://github.com/…/docs/search?…).
Dopisu to tam.
- MajklNajt
- Člen | 501
ja to používam takto:
$form->addSubmit("save", "admin.buttons.save_and_stay")->onClick[] = function ($submit) {
$this->onClickSaveAndStay($submit->form);
};
$form->addSubmit("save_and_close", "admin.buttons.save_and_close")->onClick[] = function ($submit) {
$this->onClickSaveAndClose($submit->form);
};