addConditionOn – něco jako OR

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

Klasická situace – mám formulář u změny profilu… dá se změnit email, osobní údaje a pak je tam skupina změnit heslo a tam bych chtěl, že když někdo vyplní cokoliv do políčka Staré heslo, Nové heslo a Nové heslo znovu aby se spustila validace toho hesla, jinak bych to nechal projít a upravil jenom ostatní údaje. Abych jenom neplácal tady je kód co zatím mám:

$form->addPassword('password_old', 'Staré heslo:');


$form->addPassword('password', 'Nové heslo:')
              ->addConditionOn($form["password_old"], Form::FILLED)
		//Ted je to jako AND ale ja bych prave potreboval OR - takze kdyz bude tohle pole, nebo pole Stare heslo vyplněné, aby se zvalidovala celá skupina.
              ->addCondition(Form::FILLED)
              ->addRule(Form::MIN_LENGTH, 'Heslo musí být minimálně %d znaků dlouhé', 6)
              ->addRule(Form::MAX_LENGTH, 'Heslo musí být maximálně %d znaků dlouhé', 30);

$form->addPassword('password_again', 'Nové heslo znovu:')
              ->addConditionOn($form["password"], Form::FILLED)
              ->addRule(Form::EQUAL, 'Hesla nejsou stejná', $form["password"]);

Díky za pomoc

Ondřej Mirtes
Člen | 1536
+
0
-

IMHO ti pomůže:

$form->addPassword('password', 'Nové heslo:')
              ->addConditionOn($form["password_old"], Form::FILLED)
              ->addRule(Form::MIN_LENGTH, 'Heslo musí být minimálně %d znaků dlouhé', 6)
              ->addRule(Form::MAX_LENGTH, 'Heslo musí být maximálně %d znaků dlouhé', 30);

$form['password']->addCondition(Form::FILLED)
              ->addRule(Form::MIN_LENGTH, 'Heslo musí být minimálně %d znaků dlouhé', 6)
              ->addRule(Form::MAX_LENGTH, 'Heslo musí být maximálně %d znaků dlouhé', 30);
i.magine
Člen | 81
+
0
-

Díky, pomohlo, jenom … není to trošku prasárna? :-)

Ondřej Mirtes
Člen | 1536
+
0
-

Tak můžeš si ty stringy a čísla definovat někde výš v proměnné, abys je mohl měnit na jednom místě, ale celkově to žádná prasárna není. Fluent interface je jen taková pomůcka, na vytáhnutí pole pomocí $form[‚password‘] a doplnění pravidel není nic špatného.