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
+
0
-

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
+
0
-

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)

t.prochazka
Člen | 6
+
0
-

Díky za nakopnutí, už jsem přepracovaný :-(