Jak validovat heslo, jen když je ve formuláři vyplněné

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

Ahoj,

při registraci si uživatel volí heslo, které musí být min. 6 znaků dlouhé. Dále si potom uživatel může editovat profil, kde může své heslo změnit. V tomto formuláři nechávám input pro nové heslo prázdný a pokud ho uživatel nevyplní, tak se nové heslo nenastavuje. To mi způsobuje problém, že heslo nesplní podmínku pro minimální délku a nenechá potvrdit editaci ostatních položek.

Máte prosím nějakou radu, jak toto vyřešit?

lukyn94
Člen | 30
+
0
-

Já to řeším tak že změna hesla má svůj form ;-)

norbe
Backer | 405
+
0
-
$passwordInput->addCondition(Form::FILLED)->addRule(Form::MIN_LENGTH, ..)
davez
Člen | 60
+
0
-

norbe napsal(a):

$passwordInput->addCondition(Form::FILLED)->addRule(Form::MIN_LENGTH, ..)

Díky za tip, ale toto mě zase nepustí, pokud uživatel nechá pole prázdné (=nechce měnit heslo).

norbe
Backer | 405
+
0
-

A zkoušel jsi to vůbec? Pokud tam ještě někde nemáš nějakou jinou podmínku, tak to musí fungovat..

marioff
Člen | 69
+
0
-

ja to mam tak, ze heslo sa musi vyplnit 2× rovnake..

......
$form->addPassword('password', 'Heslo')->addCondition(Form::FILLED)->addRule(Form::MIN_LENGTH, "Heslo musí mať minimalne %d znakov", 6);
$form->addPassword('password2', 'Zopakovať heslo')->addRule(Form::EQUAL, NULL, $form['password']);
......
Pavel Kravčík
Člen | 1196
+
+1
-

A co přidat podmínku pro password2?

	->addConditionOn($form['password'],Form::FILLED)
iguana007
Člen | 970
+
0
-

Já řeším editaci hesla takto:

		$this->addPassword('password', 'Heslo')
			->addCondition(Form::FILLED)
			->addRule(Form::MIN_LENGTH, 'Položka %label musí obsahovat min. %d znaků', 3)
			->addRule(Form::MAX_LENGTH, 'Položka %label může obsahovat max. %d znaků', 255);
		$this['password']->getControlPrototype()->autocomplete('off');
		$this->addPassword('password_again', 'Heslo (znovu)')
			->addConditionOn($this["password"], Form::FILLED)
			->addRule(Form::EQUAL, "Hesla se musí shodovat!", $this["password"])
			->addRule(Form::MIN_LENGTH, 'Položka %label musí obsahovat min. %d znaků', 3)
			->addRule(Form::MAX_LENGTH, 'Položka %label může obsahovat max. %d znaků', 255);
davez
Člen | 60
+
0
-

Díky všem, poskládal jsem to z toho.