Da sa metoda onSuccess pri formularoch obist na strane servera?
- sabrx
- Člen | 47
Zdravím, mali sme takú debatu s kolegom, či je treba v submitted metóde skontrolovať validitu formulára pomocou metódy
$form->isValid()
Ja myslím, že nie, pretože o to sa predsa stará callback onSuccess, takže keď to ním prejde, formulár musí byť valídny. Podľa zdrojáku z Form.php
if (isset($valid) || $this->isValid()) {
$this->onSuccess($this);
} else {
$this->onError($this);
if ($this->onInvalidSubmit) {
trigger_error(__CLASS__ . '->onInvalidSubmit is deprecated; use onError instead.', E_USER_WARNING);
$this->onInvalidSubmit($this);
}
}
to tak je, ale predsa len by som to potreboval potvrdiť od nejakého Nette guru.
- castamir
- Člen | 629
metody v onSuccess[]
se provedou jen pokud je formulář
validní nebo je odeslán přes tlačítko (submit button),
které má nastavenou vlastnost setValidationScope(FALSE).
Editoval castamir (28. 3. 2013 19:41)
- Filip Procházka
- Moderator | 4668
Přesně tak, když nebudeme počítat varianty, kdy někdo násilně vyhodí ten callback z formuláře (jiný programátor). Od uživatele to nijak obejít nejde.
- David Matějka
- Moderator | 6445
@Majkl578: na to se mi osvedcilo tohle
class Form extends \Nette\Application\UI\Form
{
public function onSuccess(Form $form)
{
try {
parent::onSuccess($form);
} catch (AbortExecutionException $e) {
}
}
public function abort()
{
return new AbortExectionException;
}
}
class AbortExecutionException extends \Exception { }
kdyz se neco spatneho stane, zavolam akorat $form->abort()
a
dalsi callback se neprovede :)