Podmíněná validace v Nette 2.0 alpha 2
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.

- t.prochazka
- Člen | 6
Mám problém s podmíněnou validací popsanou zde:
http://zdrojak.root.cz/…ormulare-ii/
<?php
$form->addCheckbox('promo', 'zasílejte mi reklamu');
$form->addText('email', 'E-mail:')
->addConditionOn($form['promo'], Form::EQUAL, TRUE) // podmínka: pokud je checkbox zaškrtnut
->addRule(Form::FILLED, 'Zadejte e-mailovou adresu'); // pak musí být e-mail zadaný
?>
v mém případě konkrétně:
<?php
$cc = $form->addCheckbox('competition',"Soutěžní telefon");
$dateFrom = $form->addText('dateFrom', 'Den platnosti od');
$dateFrom->setOption('description', 've tvaru dd.mm.yyyy');
$dateFrom->addCondition($cc, NForm::EQUAL, true)->addRule(NForm::FILLED, 'Chybí počátek platnosti', true);
?>
hází zo chybu: Call to undefined method NCheckbox::__invoke().
Snaží se to volat call_user_func_array($this->cb, $args);
kde $args je
array(2) ▼ [
0 ⇒ NTextInput(16) …
1 ⇒ „:equal“ (6)
]
Jde o chybu Nette nebo mou?

- Jakub Lédl
- Člen | 55
Pro testování na základě jiného formulářového prvku slouží metoda
addConditionOn. Ty ve svém případě používáš metodu
addCondition, která může přijímat taky callback, který
reprezentuje vlastní validační rutinu, proto se to snaží „zavolat“ ten
checkbox (magická metoda __invoke).
Editoval Jakub Lédl (1. 2. 2011 12:01)