Po odeslání formuláře se neověří shoda nových hesel

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

Zdravim,

nevíte někdo proč se neověří shoda hesel u tohoto formuláře:

public function createComponentProfileForm() {
    $form = new Form;
    $form->addText('username','Přihlašovací jméno: ')
         ->setAttribute('class','admin-input')
         ->setValue($this->user->getIdentity()->username);

    $form->addEmail('email','Email: ')
         ->setAttribute('class','admin-input')
         ->setValue($this->user->getIdentity()->email);

    $form->addPassword('oldPassword', 'Stávající heslo: ')
         ->addRule(Form::FILLED,'Zadejte vaše staré heslo.')
         ->setAttribute('class', 'admin-input')
         ->setAttribute('placeholder', 'staré heslo');

    $form->addPassword('newPassword', 'Nové heslo: ')
         ->addRule(Form::FILLED, 'Zadejte vaše nové heslo.')
         ->setAttribute('class', 'admin-input')
         ->setAttribute('placeholder', 'nové heslo');

    $form->addPassword('passwordVerify', 'Potvrzení hesla: ')
         ->setRequired('Zadejte heslo ještě jednou pro kontrolu.')
         ->setAttribute('class', 'admin-input')
         ->setAttribute('placeholder', 'Potvrzení nového hesla')
         ->addRule(Form::EQUAL,'Vaše vyplněné heslo se neshoduje.', $form['newPassword']);

    $form->addSubmit('send','Uložit')
         ->setAttribute('class','admin-btn');

    $form->onSuccess[] = [$this,'profileFormSucceeded'];
    return $form;
}

Ještě bych se chtěl zeptat, zda ověřování hesla s DB má být v MODELU nebo ve funkci v presenteru (profileFormSucceeded).

Díky moc

Editoval kiCkZ (28. 7. 2017 10:25)

igor.pocta
Člen | 100
+
0
-

Máš tam Nette Forms JS? Máš formulář z Nette\Application\UI\Form?

Ověření hesla by jsi měl mít určitě mimo presenter. Např. v sanbdoxu je UserManager, který má metodu authenticate a celý je jako samostatná služba

Editoval igor.pocta (28. 7. 2017 10:33)

kiCkZ
Člen | 153
+
0
-

igor.pocta napsal(a):

Máš tam Nette Forms JS? Máš formulář z Nette\Application\UI\Form?

Ověření hesla by jsi měl mít určitě mimo presenter. Např. v sanbdoxu je UserManager, který má metodu authenticate a celý je jako samostatná služba

Mam v hlavičce toto:

use Nette,
    Nette\Application\UI\Form;

Editoval kiCkZ (28. 7. 2017 10:37)

kiCkZ
Člen | 153
+
0
-

Věděl by někdo ještě ?

David Matějka
Moderator | 6445
+
0
-

chapu spravne, ze se nevykona tohle

->addRule(Form::EQUAL,'Vaše vyplněné heslo se neshoduje.', $form['newPassword']);

a rovnou se zavola onSuccess?

kiCkZ
Člen | 153
+
0
-

David Matějka napsal(a):

chapu spravne, ze se nevykona tohle

->addRule(Form::EQUAL,'Vaše vyplněné heslo se neshoduje.', $form['newPassword']);

a rovnou se zavola onSuccess?

Přesně tak, prakticky to proběhne úplně v pořádku, ale ve formuláři jsou hesla úplně jiná.
Takže validace se neprovede.

David Matějka
Moderator | 6445
+
0
-

zkusil jsem ten kod, co jsi poslal, a funguje bez problemu – validace se zavola. takze mas asi problem jinde.

manwe
Člen | 44
+
0
-

jak psal igor, mas forms.js od Nette?

CZechBoY
Člen | 3608
+
+3
-

nepotrebuje js kdyz nefunguje ani server side validace