Po odeslání formuláře se neprovede žádná metoda
- kolmano
- Člen | 2
Zdravím všechny,
při zapomenutí hesla posílám na mail uživatele token pomocí kterého si může změnit zapomenuté heslo. Všechno funguje suprově, ale v posledním kroku po odeslání nového heslo je prostě ignorována metoda, která má toto heslo uložit do databáze. Přikládám zdrojový kód.
Už na to koukám asi 4 dny a nikde nevidím chybu.
V metodě ‚newPasswordSuccess‘ se neprovede vůbec nic a je úplně přeskočená (vím, že zatím není dopsaná a nic nedělá).
Všechny ostatní formuláře fungují normálně, takže někde asi bude překlep nebo nějaká jiná hezká chyba. Budu rád, za každou radu.
Díky
<?php
public function createComponentNewPasswordForm() {
$form = new Form();
$token = $this->getParameter('token');
if ($this->context->Database->isTokenValid($token)) {
//token je platný
$form->addProtection();
$form->addGroup('Zadejte nové heslo');
$form->addPassword('heslo', 'Nové heslo')
->addRule(Form::FILLED, 'Zadejte nové heslo')
->addRule(Form::MIN_LENGTH, 'Heslo musí mít alespoň %d znaky', 5);
$form->addPassword('heslo2', 'Heslo ještě jednou')
->addRule(Form::FILLED, 'Zadejte heslo ještě jednou pro kontrolu')
->addRule(Form::EQUAL, "Zadané hesla se neshodují", $form["heslo"]);
$form->addSubmit('send', 'Změnit heslo');
$form->addHidden('token1', $token);
} else {
$form->addError('Vygenerovaný odkaz již není platný.');
}
$form->onSuccess[] = array($this, 'newPasswordSuccess');
return $form;
}
public function newPasswordSuccess(Form $form) {
//nove heslo do DB, poslat potvrzující email, přesměrovat na homepage
$values = $form->getValues();
$this->context->Database->setNewPassword($values['token1'], $values['heslo']);
print_r($values);
die();
$this->flashMessage('Heslo nastaveno !');
$this->redirect('Homepage:');
}
?>
- petr.pavel
- Člen | 535
Proběhne ti po odeslání ta část, kde se definuje submit button „send“? Možná, že ne a formulář nepovolí odeslání neexistujícím tlačítkem.
Taky bych zkusil to ladící die('neco');
hodit hned na
začátek newPasswordSucces(), ať máš jistotu, že se fakt neprovádí.
No a na závěr: Doporučuju investovat trochu času a rozjet krokování v nějakém IDE. Pak pro tebe takovéhle oříšky přestanou být problém.