Valiadace checkbocxů v kontejneru?
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Vladik_hk
- Člen | 50
Ahoj,
jak udelat validace checkboxů ve form kontejneru? Potrebuji tam mit, ze alespon
jeden checkbox bude zaskrtnuty. Mohl bych si na to napsat vlastni validacni
callback fci, ale nevim jak se v te callback fci dostat ke kontejneru, vim jen
jak se dostat k tomu form prvku, na ktery mam callback fci navesenou.
- Filip Procházka
- Moderator | 4668
// ...
$cont = $form->addContainer('cont');
$cont->addCheckbox('jedna');
$cont->addCheckbox('dva');
$cont->addCheckbox('tri');
$form->onValidate[] = function (Form $form) {
if (!array_filter($form['cont']->values)) {
$form->addError('Alespoň jedena volba musí být vybrána z cont.');
}
};
- Filip Procházka
- Moderator | 4668
Chyba je v tom, že formulář nově vrací místo pole objekt Nette\ArrayHash, který má v sobě hodnoty z formuláře. Stačí nahradit
if (!array_filter($form['cont']->values)) {
za
if (!array_filter((array)$form['cont']->values)) {
- Filip Procházka
- Moderator | 4668
ne, ale můžeš si přidat svoji funkci do
<script>
Nette.validators['Validators::funkce'] = function () { ...
A potom ve formuláři
class Validators { public static function funkce() { ...
$control->addRule('Validators::funkce', ...
Mělo by ji to pak exportovat a volat automaticky.