Pristup k formulari v metode odeslani pomoci SubmitButton $button
- dotTwelve
- Člen | 167
V metode resetPasswordClicked(SubmitButton $button)
pristupuji
k hodnotam odeslanym z formulare pres
$form = $this['editForm']
;
Pri zachyceni vyjimky DibiDriverException
ze uzivatel jiz v DB
existuje se mi ale stranka presmeruje. Kdyz dam do vyjimky kod
$this->redirect('this');
tak zustanu na aktualnim formulari, ale
pole ktere vyhodi chybu se mi prepise na puvodni hodnotu.
Jak nastavim hodnotu, ktera byla odeslana?
- Šaman
- Člen | 2666
Já si po každém odeslání (ještě před non-live validací) ukládám
načtené $values
do sessions. Pak se dají při jakékoliv chybě
zase předvyplnit. Jenom pak někdy musím rozhodovat mezi už validovanou
hodnotou, odeslanou syrovou hodnotou a default hodnotou. Beru v tomto pořadí
první která je isset()
.
- marek.dusek
- Člen | 99
A proč se ti to přesměruje při chybě? Ja to vždy řeším nějak takto:
<?php
try {
$model->begin();
$model->save($form->getValues());
$model->commit();
$this->flashMessage('Vše ok');
$this->redirect(někam);
// a jsme pryč
} catch (DibiException $e) {
$model->rollback();
$form->addError('Chyba: '.$e->getMessage());
// zůstaneme na aktuální stránce, hodnoty jsou ve formu
}
?>
Mimochodem toto je přesně důvod, proč považuju za zlo zneužívání výjimek pro řízení chodu aplikace (různé ty Abort, Forwarding atp.) – nelze pak chytat všechno, protože jednu takovou vyhodí ten redirect() – a je třeba ho buď dát mimo ten try-catch, nebo výjimky explicitně vyjmenovat atp. Pruda, imho zbytečná.
OT: Jaký je rozíl mezi tlačítky „Poslat“ vpravo a „Odeslat“ dole vlevo? ;)
- Honza Kuchař
- Člen | 1662
OT: Jaký je rozíl mezi tlačítky „Poslat“ vpravo a „Odeslat“ dole vlevo? ;)
Taky jsem na to koukal. :) To Poslat asi dělá texila. Odeslat dělá Nette/phpBB? :)