Zobrazení validačních hlášek na formuláři ve snippetu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- mstaufcik
- Člen | 1
Nedaří se mi zobrazit validační hlášky na stránce se snippetem uvnitř kterého je formulář. Když se formulář odešle tlačítkem submit, validační chyby v podobě bubliny se nezobrazí.
{snippet editUdalost}
{ifset $editUdalost}
{form udalostForm}
<button class="button primary ajax" name="saveUdalost" type="submit"><i>Uložit</i></button>
{/form}
{/ifset}
{/snippet}
Validace:
protected function createComponentUdalostForm()
{
$form = new Form;
$form->addText('nazev', 'Název');
$form->addDate('datumod', 'Datum od');
$form->addDate('datumdo', 'Datum do');
$form->addText('casod', 'Čas od');
$form->addText('casdo', 'Čas do');
$form->addCheckbox('jecelodenni', 'Celodenní')->setAttribute("id", "jecelodenni")->setAttribute("onclick", "toggleCelodenni()");
$form->addSubmit('saveUdalost');
$form->addSubmit('cancelUdalost');
$form->onSuccess[] = [$this, 'editUdalostSucceeded'];
$form->onValidate[] = array($this, 'validateUdalostForm');
return $form;
}
public function validateUdalostForm($form)
{
if ($form['cancelUdalost']->isSubmittedBy()) {
$this->template->editUdalost = null;
}
if ($form['saveUdalost']->isSubmittedBy()) {
$isValid = true;
foreach ($form->getControls() as $control) {
if (!$control->getRules()->validate()) {
$isValid = false;
}
}
if ($isValid == false) {
$this->template->editUdalost = 1;
}
}
$this->redrawControl("editUdalost");
}
- JZechy
- Člen | 161
Dle téhle ukázky je taky ani nijak nevypisuješ. Viz. manuální vykreslení, všimni si toho ul li.
Navíc, pokud na jedno tlačítko nechceš validovat formulář, stačí mu dát setValidationScope(FALSE) a nemusíš ručně vyvolávat validaci pak.