Question

Existe-t-il un moyen d'utiliser Validator sur le formulaire de connexion à partir de Authentification simple au lithium Didacticiel.Je sais qu'il est préférable d'utiliser la validation dans le modèle, mais avec le formulaire de connexion, il n'y a pas de modèle, donc, si je comprends bien, je dois utiliser Validator dans SessionsController, mais je ne sais pas comment le faire (

Ce que j'essaie de faire est dans SessionsController :

<?php
namespace app\controllers;
use lithium\security\Auth;
use lithium\storage\Session;
use lithium\util\Validator;

class SessionsController extends \lithium\action\Controller {

private $rules = array(
    'password' => array(
        array('notEmpty', 'message' => 'password is empty'),
    ),
    'email' => array(
        array('notEmpty', 'message' => 'email is empty'),
        array('email', 'message' => 'email is not valid')
    )
);

public function add() {
    if ($this->request->data && Auth::check('default', $this->request)) {
        return $this->redirect('/');
    }
    // Handle failed authentication attempts
    $errors = Validator::check($this->request->data, $this->rules);
    return compact('errors');
}

public function delete() {
    Auth::clear('default');
    return $this->redirect('/');
}

/* ... */
}

et je m'attends à ce qu'une fois le formulaire vide envoyé, il soit rendu avec des erreurs, comme lors de la création d'un utilisateur à partir d'un didacticiel.Mais aucune erreur n’est affichée, il suffit de vous reconnecter au formulaire.Puis-je un jour valider des formulaires sans modèles et comment le faire dans Lithium ?

Merci d'avance.

Était-ce utile?

La solution

Les erreurs rendues dans le formulaire sont liées à une entité, qui est liée au formulaire lorsque vous le créez avec $this->form->create($user).Dans ce cas seulement, les erreurs s'affichent automatiquement grâce à l'assistant de formulaire.

Si vous avez besoin de vérifier, dans le contrôleur, les données entrantes, vous pouvez vérifier $this->request->data['password'] et renvoie les erreurs que vous devez gérer vous-même dans la vue formulaire (avec if (!empty($errors)) Par exemple)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top