redirect v metodě zpracování formuláře
- Spectator
- Člen | 48
Je mi jasné, že se to tu probílaro nespočetněkrát, ale přesto.
Vytvářím si formulář pomocí továrničky snažím se docílit redirectu po
uložení, ale…
Už při načtení stránky a bez odeslání formuláře se mi zobrazí chybová
hláška NAbortException a v $response se uloženo
NRedirectResponse(2) ▼ {
url private ⇒ „http://127.0.0.1/website/www/?_fid=hjp1“ (39)
code private ⇒ 302
}
Nemohu se dopídit toho, proč to nefunguje.
protected function createComponentForm() {
$form = new NForm;
$form->addText('jmeno', 'Jméno')
->addRule(NForm::FILLED, 'Jméno uživatele je povinné!');
$form->addText('email', 'E-mail')
->addRule(NForm::FILLED, 'Jméno uživatele je povinné!')
->addRule(NForm::EMAIL, 'Vyplňte platnouz e-mailovou adresu!');
$form->addSubmit('create', 'Vytvořit');
$form->onSuccess[] = callback($this, 'createUser')->invoke($form);
return $form;
}
public function createUser(NForm $form) {
$this->uzivatel = $this->context->uzivatel;
if ($this->uzivatel->save($form->values->jmeno, $form->values->email)) {
$this->flashMessage('uživatel uložen.', 'success');
} else {
$this->flashMessage('uživatel již existuje.', 'error');
}
$this->redirect('Homepage:');
}
- Vojtěch Dobeš
- Gold Partner | 1316
Spectator Tvůj kód znamená, že ten callback zavoláš
vždy při definování formuláře. Pokud se ti bez toho po odeslání nic
neděje, ujisti se, že vypisuješ formulářové chyby, pravděpodobně tam
nějaká bude, která brání zavolání události onSuccess
.
- Majkl578
- Moderator | 1364
NAppForm (Nette\Application\UI\Form) je rozšířením NForm (Nette\Forms\Form), umí automaticky rozpoznat, zda byl odeslán, to NForm neumí. Viz dokumentace.