Problém s validáciou formuláru

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
mbohovic
Člen | 13
+
0
-

Zdravím,

chcel by som si ďať validovať formular pre zadavanie hesla a to nasledovne
ak je login zadaný heslo nesmie obsahovať prázdne znaky a jeho min. dĺžka je 4 znaky
ak nie je login zadaný nech dá informáciu o tom, že heslo nebude nastavené
Môj kód je takýto
$form = new Form();
$form->addText('login', 'Login');
/** @var TextInput $password */
$password = $form->addPassword('password', 'Heslo');
$password->addConditionOn($form['login'], Form::FILLED)
->addRule(Form::PATTERN, '%label nesmie obsahovať prázdne znaky.', '([^ ]+)')
->addRule(Form::MIN_LENGTH, 'Minimálna dĺžka hesla je %d znaky.', 4)
->endCondition()
->addConditionOn($form['login'], Form::FILLED, false)
->addRule(Form::FILLED, '%label nebude zmenené ak nie je zadaný login.');

Hláška pre počet znakov ešte prejde ale do druhej podmienky pre po endCondition sa nedostanem.

Skúšal som aj takúto možnosť

namiesto

...
->addConditionOn($form['login'], Form::FILLED, false)
...

použiť toto

...
->addConditionOn($form['login'], Form::EQUAL, '')
...

Dakujem za radu

Editoval mbohovic (12. 12. 2013 14:03)

mbohovic
Člen | 13
+
0
-

Upravil som kód nasledovne

$password->addConditionOn($form['login'], Form::FILLED)
				->addRule(Form::PATTERN, '%label nesmie obsahovať prázdne znaky.', '([^ ]+)')
				->addRule(Form::MIN_LENGTH, 'Minimálna dĺžka hesla je %d znaky.', 4)
				->endCondition()
				->addConditionOn($form['login'], Form::EQUAL, '')
				->addRule(~Form::FILLED, 'Ak nie je zadaný login %label nebude zmenené.');

Editoval mbohovic (20. 12. 2013 15:07)