Vypisování chyb z formuláře

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

Zdravím,
nemůžu přijít na to, jak vypsat ve formu pro přihlášení chyby z authenticatoru.
Určitě to bude nějaká drobnost, za to se omlouvám, ale nemůžu zjistit která.

Form:

{form signInForm}

<!-- Jednoduché vykreslení chyb -->
<ul n:if="$form->hasErrors()">
    <li n:foreach="$form->errors as $error">{$error}</li>
</ul>

<table>
<tr class="required">
    <th>{label email /}</th>
    <td>{input email}</td>
</tr>
<tr class="required">
    <th>{label password /}</th>
    <td>{input password}</td>
</tr>
<tr>
<td>{input remember}</td>
</tr>

</table>
    {input send}

{/form}

FormFactory:

	public function createIn()
	{
		$form = new Form;

		$form->addText('email', 'Email:')
			->setType('email')
			->setRequired('Zadejte email, pod kterým jste se registrovali');

		$form->addPassword('password', 'Password:')
			->setRequired('Zadejte heslo');

		$form->addCheckbox('remember', 'Pamatovat si přihlášení');

		$form->addSubmit('send', 'Přihlásit se');


		$form->onSuccess[] = function ($form, $values) {


			try {
				$this->user->login($values['email'], $values['password']);
			} catch (Nette\Security\AuthenticationException $e) {
				$form->addError($e->getMessage());
				$form->getPresenter()->redirect('this');
			}
if ($values['remember']) {
				$this->user->setExpiration('14 days', FALSE);
			} else {
				$this->user->setExpiration('20 minutes', TRUE);
			}

$form->getPresenter()->redirect('Dashboard:default');
		};
		return $form;
	}

Authenticator:

public function authenticate(array $credentials)
{
    list($email, $password) = $credentials;

    $row = $this->database->table(self::TABLE_NAME)->where(self::COLUMN_EMAIL, $email)->where(self::COLUMN_PASSWORD_HASH, Nette\Security\Passwords::hash($password))->fetch();
    if (!$row) {
        throw new AuthenticationException('Špatné přihlašovací údaje.', self::IDENTITY_NOT_FOUND);
    }else if ($row['mail_verified'] == 0){
        throw new AuthenticationException('Účet není aktivován. Aktivujte přes link, který byl zaslán na Váš email');
    }
    /*    	elseif (!Passwords::verify($password, $row[self::COLUMN_PASSWORD_HASH])) {
                dump('wrong password');
                throw new AuthenticationException('Zadal/a jste špatné heslo.', self::INVALID_CREDENTIAL);


            }*/
    /*	elseif (Passwords::needsRehash($row[self::COLUMN_PASSWORD_HASH])) {
        $row->update(array(
            self::COLUMN_PASSWORD_HASH => Passwords::hash($password),
        ));
    }*/

    $arr = $row->toArray();
    $accManager = new AccountManager($this->database);

    $userData = array();
    $userData['url_name_set'] = $accManager->completeUrlName($arr[self::COLUMN_URL_NAME], $arr[self::COLUMN_URL_NAME_INDEX]);
    $userData['role'] = $arr['role'];

    unset($arr[self::COLUMN_PASSWORD_HASH]);
    return new Nette\Security\Identity($row[self::COLUMN_ID], NULL, $userData);
}
David Matějka
Moderator | 6445
+
0
-

smaz to $form->getPresenter()->redirect('this');

Honza_Vaclavik
Člen | 20
+
0
-

David Matějka napsal(a):

smaz to $form->getPresenter()->redirect('this');

To jsem už předtím zkoušel, bohužel to nezabralo.

Martk
Člen | 661
+
+2
-

Nahraď $form->getPresenter()->redirect('this'); na return;

Honza_Vaclavik
Člen | 20
+
0
-

Antik napsal(a):

Nahraď $form->getPresenter()->redirect('this'); na return;

Děkuji mnohokrát, ušetřil jste mi mnoho vytrhaných vlasů ;)