2012-12-10 6 views
0

J'ai vérifié pendant longtemps la validation de cakephp pour valider mon formulaire de connexion. Mon problème est quand j'entre le nom d'utilisateur et le mot de passe comme vide la validation ne montrant pas.cakephp validation du formulaire de connexion sur nom d'utilisateur et mot de passe vide

fonction de connexion à UserController.php contient

if ($this->request->is('post')) { 
      $this->user->set($this->request->data); 
      $errors = $this->user->invalidFields(); 

      if ($this->Auth->login()) { 
       return $this->redirect($this->Auth->redirect()); 
      } else { 
       $this->Session->setFlash($this->Auth->authError, 'default', array(), 'auth'); 
       $this->redirect($this->Auth->loginAction); 
      } 
     } else { 

      if ($this->Auth->login()) { 
       return $this->redirect($this->Auth->redirect()); 
      } 
     } 

Mon User.php modèle contient validateur comme

public $validate = array(
     'username' => array(
      'isUnique' => array(
       'rule' => 'isUnique', 
       'message' => 'The username has already been taken.', 
      ), 

      'notEmpty' => array(
       'rule' => 'notEmpty', 
       'message' => 'This field cannot be left blank.', 
      ), 
     ), 
     'email' => array(
      'email' => array(
       'rule' => 'email', 
       'message' => 'Please provide a valid email address.', 
      ), 
      'isUnique' => array(
       'rule' => 'isUnique', 
       'message' => 'Email address already in use.', 
      ), 
     ), 
     'password' => array(
      'rule' => array('minLength', 6), 
      'message' => 'Passwords must be at least 6 characters long.', 
     ), 
     'current_password' => array(
      'rule' => '_identical', 
      ), 
     'name' => array(
      'rule' => 'notEmpty', 
      'message' => 'This field cannot be left blank.', 
     ), 
    ); 

En fait, mon formulaire de connexion ne contient que usgername et mot de passe. Mais j'ai mis cette validation pour le formulaire d'enregistrement d'utilisateur. La validation a fonctionné correctement dans le formulaire d'inscription, mais dans le cas de la connexion, la validation ne fonctionne pas. Oui, je sais qu'il ya beaucoup de questions postées sur ce site lui-même concernant le même problème, mais rien ne résout mon problème, j'ai essayé toutes les questions de stackoverflow. S'il vous plaît aider

+0

Il est inutile de valider les détails de l'utilisateur, qu'ils puissent se connecter ou non. – dogmatic69

Répondre

0

validation se produit uniquement lors de l'enregistrement, ou lorsque vous appelez directement la méthode de validation à l'aide:

$this->Model->validates(); 

Vous ne recevez pas les erreurs de validation parce que vous ne valident pas réellement vos données. Pour obtenir des erreurs de validation, vous devez effectuer les opérations suivantes:

if ($this->request->is('post')) { 
     $this->User->set($this->request->data); 
     if ($this->User->validates()) { 
      echo "This is valid!"; 
     } else { 
      echo "This is invalid"; 
      $errors = $this->User->validationErrors; 
     } 
} 
+1

appelant "$ errors = $ this-> User-> invalidFields();" après avoir appelé validates est faux. vous devez utiliser $ this-> User-> validationErrors à la place! – mark

+0

Bonne capture Mark, vous avez raison car cela ferait double emploi avec les erreurs de validation. Merci. – shoesole

Questions connexes