práce nad formulářem, ruční validace
- tany
- Člen | 31
Ahoj, existuje nějaký způsob ruční validace formu ? Stavím ajax site, a chtěl by jsem hlavně mít možnost kontroly nad chybama ve formuláři.
Klasický způsob, co jsem našel v dokumentaci, je vyvtoření komponenty v továrničce a onclick callback u submitu. Tento způsob mi nepřijde pro ajax moc vhodný, protože při chybě validace na straně serveru se vrací opět vyrendrovaný form. (JS validace funguje, ale při její chybě, nebo podstrčení postu není nic platná).
Takže nějak hledám možnost ala:
if ($this->isAjax()) {
if($form->isValid($postData)) {
...
} else {
foreach($form->getErrors() as $error) {
$output[] = array('idprvku' => $error)
}
.. json responce
}
}
Je něco takového možné ?
- bojovyletoun
- Člen | 667
něco takovéhleho v nette není. Není problém formulář obalit do snippetu. Ale něco podobného se zde řešilo –přečíst celé i s odkazy
- pave.kucera
- Člen | 122
Napadá mě jedno řešení, ale nevím, jeslti není nějaké lepší, a nad čistotou jsem si moc nelámal hlavu :).
<?php
protected function createComponentMyForm()
{
// $form instanceof \Nette\Application\UI\Form
$form->onError[] = function($form) {
$presenter = $form->getPresenter(TRUE);
if ($presenter->isAjax()) {
$presenter->sendResponse(new \Nette\Application\Respones\JsonResponse($form->getErrors())); // možná by šel využít i $presenter->payload
}
};
}
?>
Psáno z hlavy, neozkoušeno, ale princip tam snad naznačený je.