Vraceni stejneho odkazu pri spatne validaci formulare

Piticu
Člen | 93
+
0
-

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

docky
Člen | 59
+
0
-

Ještě ukaž resetPasswordFormSucceded :)

Piticu
Člen | 93
+
0
-
$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
+
+1
-

ahoj, pridej do uprav actionReset, aby tam byly v argumentech ty parametry

public function actionReset($email, $token)
Piticu
Člen | 93
+
0
-

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
+
0
-

dej tam pouze to email a token do signatury metody. nette dle toho ty paramery zachova po odeslani formulare

Piticu
Člen | 93
+
0
-

David Matějka napsal(a):

dej tam pouze to email a token do signatury metody. nette dle toho ty paramery zachova po odeslani formulare

public function actionReset($email,$token)
{

}

Takze staci jenom tohle. Funguje to. Diky