Vzájemná validace hodnot dvou radiolistů
- premek_k
- Člen | 172
Ahoj,
mám formulář, kde jsou dva radiolisty:
<?php
$form->addRadioList('doprava', 'Způsob dopravy', ['Osobní vyzvednutí', 'Poštou']);
$form->addRadioList('platba', 'Způsob platby', ['Kartou', 'V hotovosti', 'Dobírka']);
?>
Dají se definovat validační pravidla na těchto dvou prvcích tak, abych zajistil, že:
- Když je doprava typu „Osobní vyzvednutí“, není platná platba „Dobírkou“
- Když je doprava typu „Poštou“, není platna platba „V hotovosti“
?
Díky, Přemek
- Pavel Kravčík
- Člen | 1196
https://doc.nette.org/cs/forms
$form->addText('email', 'E-mail:')
// pokud je checkbox zaškrtnut
->addConditionOn($form['newsletters'], Form::EQUAL, TRUE)
// pak vyžaduj e-mail
->setRequired('Zadejte e-mailovou adresu');
- premek_k
- Člen | 172
Pavel Kravčík napsal(a):
https://doc.nette.org/cs/forms
$form->addText('email', 'E-mail:') // pokud je checkbox zaškrtnut ->addConditionOn($form['newsletters'], Form::EQUAL, TRUE) // pak vyžaduj e-mail ->setRequired('Zadejte e-mailovou adresu');
Díky, ale to si právě myslím, že není ono – já potřebuji testovat jednen z N stavů toho RadioListu. U Checkboxu je jen zatrhnuto/nezatrhnuto, tam je to jasné.
Napadá mne však nyní, zda nejde udělat nějaká takováto konstrukce:
<?php
$form->addRadioList('doprava', 'Způsob dopravy', ['Osobní vyzvednutí', 'Poštou']);
$form->addRadioList('platba', 'Způsob platby', ['Kartou', 'V hotovosti', 'Dobírka']);
$form['platba'][1]->addConditionOn($form['doprava'][0], Form::Equal, TRUE)...
a
$form['platba'][2]->addConditionOn($form['doprava'][1], Form::Equal, TRUE)...
?>
Editoval premek_k (27. 11. 2015 17:39)
- jiri.pudil
- Nette Blogger | 1032
Napadá mne však nyní, zda nejde udělat nějaká takováto konstrukce:
Ne, ale něco takového by fungovat mělo:
$form['platba']->addConditionOn($form['doprava'], $form::EQUAL, 0)
->addRule(~$form::EQUAL, 2);
- premek_k
- Člen | 172
Díky. V rychlosti jsem to sice zkusil, ale nefunguje to – chce to asi odladit…
Edit:
Tím chci říct, že se tomu budu chvíli věnovat, a ne to, že čekám se
založenýma rukama na to, až to někdo odladí a postne… :-)
Když jsem to po sobě četl, zjistil jsem, že interpretace mé odpovědi není
jednoznačná.
Editoval premek_k (27. 11. 2015 19:58)
- David Grudl
- Nette Core | 8228
jiri.pudil napsal(a):
Napadá mne však nyní, zda nejde udělat nějaká takováto konstrukce:
Ne, ale něco takového by fungovat mělo:
$form['platba']->addConditionOn($form['doprava'], $form::EQUAL, 0) ->addRule(~$form::EQUAL, 2);
asi by mělo být addRule(~$form::EQUAL, ‚hlaska‘, 2);