Vraceni stejneho odkazu pri spatne validaci formulare
- Piticu
- Člen | 93
Ahoj vsem,
mam nasledujici odkaz: …/reset?email=email&token=token, pomoci kteremu uzivatel si obnovi heslo.
K tomu mam formular, ktery obsahuje 2 pole (Nove Heslo a Heslo pro kontrolu). Jak se mohu vratit na stejny odkaz v pripade, ze se hesla neshoduji nebo delka hesla je prilis mala. Pokazde kdyz odeslu formular, vrati me sem ...../reset a nemuzu prijit na to jak ve formulari vratit stejny odkaz.
Formular vypada nasledovne:
protected function createComponentResetPasswordForm()
{
$form = new Form;
$form->addPassword('password')
->setRequired('password')
->setRequired('Prosím vyplňte heslo')
->addRule(Form::MIN_LENGTH, 'Heslo musí mít alespoň %d znaky', 5);
$form->addPassword('password2')
->setRequired('Prosim vyplňte znovu heslo')
->addConditionOn($form['password'], Form::VALID)
->addRule(Form::EQUAL, 'Hesla se neshodují.', $form['password']);
$form->addSubmit('reset','Nastavit heslo');
$form->addProtection();
$form->onSuccess[] = [$this,'resetPasswordFormSucceded'];
return $form;
Dekuji
- Piticu
- Člen | 93
$data = array();
$data['password'] = password_hash($values->password, PASSWORD_DEFAULT);
if($this->users->updateUser($data))
{
$this->flashMessage('Vaše heslo bylo úspěšně změneno. Můžete se přihlásit novým heslem.', 'success');
} else {
$this->flashMessage('Nepodařilo se nastavit nové heslo', 'error');
}
$this->redirect('Account:signin');
Jenze on nesmi dojit k resetPasswordFormSucceded tam presmeruji k SignIn. Ja mam problema tim ze,kdyz se hesla neshoduji, tak po submit me premseruji na reset, bez parametru
- David Matějka
- Moderator | 6445
ahoj, pridej do uprav actionReset, aby tam byly v argumentech ty parametry
public function actionReset($email, $token)
- Piticu
- Člen | 93
David Matějka napsal(a):
ahoj, pridej do uprav actionReset, aby tam byly v argumentech ty parametry
public function actionReset($email, $token)
Ahoj, myslis si, ze bys mi to mohl vysvetlit podrobneji?
Pouzivam 2 formulare: jeden je v reset a druhy je v reset?email=email&token=token
Zatim mam:
public function actionReset($email,$token)
{
if ($email && $token){
/*Pokud je odeslan nejaky formular */
$this->redirect('Account:reset',array('email' => $email, 'token' => $token));
}
}
- David Matějka
- Moderator | 6445
dej tam pouze to email a token do signatury metody. nette dle toho ty paramery zachova po odeslani formulare