Bonjour,
J'ai un soucis avec $validate dans CakePHP 2.6.2.
Mes messages d'erreurs s'affiche tous sauf celui de password.

Mon User.ctp

<?= $this->Form->create('User', array('novalidate' => true)); ?>

    <?= $this->Form->input('name', array('label' => "Prénom :")); ?>
    <?= $this->Form->input('lastname', array('label' => "Nom :")); ?>
    <?= $this->Form->input('mail', array('label' => "Email :")); ?>
    <?= $this->Form->input('password', array('label' => "Mot de passe :")); ?>

<?= $this->Form->end("S'enregistrer"); ?>

Mon Controller

<?php
class UsersController extends AppController{

function signup(){
        if($this->request->is('post')){
            $d = $this->request->data;
            $d['User']['id'] = null;
                if(!empty($d['User']['password'] = Security::hash($d['User']['password']))){

                }

            if($this->User->save($d,true,array('name','lastname','mail','password'))){
                $this->Session->setFlash("Votre compte à bien était crée","notif");
            }else{
                $this->Session->setFlash("Merci de corriger vos erreurs","notif",array(
                    'type' => 'error'));
            }
        }
    }
}

Mon Model

<?php
class user extends AppModel{

    public $validate = array(
        'name' => array(
            array(
                'rule' => 'alphanumeric',
                'required' => true,
                'allowEmpty' => false,
                'message' => "Votre prenom n'\est pas valide"
            )
        ),
         'lastname' => array(
            array(
                'rule' => 'alphanumeric',
                'required' => true,
                'allowEmpty' => false,
                'message' => "Votre nom n'est pas valide"
            )
        ),
         'mail' => array(
            array(
                'rule' => 'email',
                'required' => true,
                'allowEmpty' => false,
                'message' => "Votre email n'est pas valide"
            ),
            array(
                'rule' => 'isUnique',
                'message' => "Cette email est déja utilisé"
            )
        ),
          'password' => array(
                array(
                'rule'    => 'notEmpty',
                'message' => "Votre mot de passe n'est pas valide",
                'allowEmpty' => false,
                )
            )       
    );
}

Merci d'avance pour votre aide.

1 réponse


Imploz54
Auteur
Réponse acceptée

J'ai trouvé une solution au problème.

Il suffit juste de rajouté une ligne dans mon controller qui est : if($this->User->validates()){}

Juste après $d['User']['id'] = null;

Problème résolu après quelque recherche sur le forum.

Merci.