validace formuláře na vyplnění jen jednoho prvku
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- lubos
- Člen | 22
Jasně, ale proč mi laděnka potom hlásí:
Call to undefined method Rules::setOption().
Příklad:
<?php
$form->addRadioList('skupina1', '', $this->frmitems['skupina1'])
->addConditionOn($form['skupina2'], ~Form::FILLED, true)
->addRule(array($this, 'finaleFrm_validate'), 'Vyberte alespoň jednoho zástupce.')
->setOption('class', 'pozadi_skupina1');
$form->addRadioList('skupina2', '', $this->frmitems['skupina2'])
->addConditionOn($form['skupina1'], ~Form::FILLED, true)
->addRule(array($this, 'finaleFrm_validate'), 'Vyberte alespoň jednoho zástupce.')
->setOption('class', 'pozadi_skupina2');
?>
- Ondřej Mirtes
- Člen | 1536
Protože to je fluent interface a když dáš šipku za addRule, tak už nejseš na formulářovém prvku, ale na jeho pravidlech.
Musíš si ho znova vytáhnout na řádku pod tím:
$form['skupina1']->getControlPrototype()->class('pozadi_skupina1');
Myslím, že ta tvoje varianta se setOption() by dělala něco jiného.
- lubos
- Člen | 22
Aha, takže stačí změnit vlastně jenom pořadí :D
<?php
$form->addRadioList('skupina2', '', $this->frmitems['skupina2'])
->setOption('class', 'pozadi_skupina2')
->addConditionOn($form['skupina1'], ~Form::FILLED, true)
->addRule(array($this, 'finaleFrm_validate'), 'Vyberte alespoň jednoho zástupce.');
?>
Díky za rady