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)