Bonjour,

Je rencontre un problème avec mes model sur cakephp, pour un champs mail, il va prendre en compte que la règle required et il ne prend pas compte les règles type mail et isUnique

Fin de mon model User.php

'mail1' => array(
                array(
                    'rule' => 'email',
                    'required' => true,
                    'allowEmpty' => false,
                    'message' => "Votre email n'est pas valide"
                ),
                array(
                    'rule' => 'isUnique',
                    'message' => "Cet email est déjà pris"
                )
             ),
            'mail2' => array(
                array(
                    'rule' => 'email',
                    'allowEmpty' => false,
                    'message' => "Votre email n'est pas valide"
                ),
                array(
                    'rule' => 'isUnique',
                    'required' => true,                    
                    'message' => "Cet email est déjà pris"
                )
             )

        );        

}

Mon editmail.ctp

<?php $this->set('title_for_layout','Editer mon email');?>
<?php echo $this->Form->create('User'); ?>

    <?php echo $this->Form->input('mail1', array('label' => "Votre nouveau email : ")); ?>
    <?php echo $this->Form->input('mail2', array('label' => "Confirmer l'email : ")); ?>

<?php echo $this->Form->end('Modifier'); ?>

Je voulais savoir pourquoi cakephp, ne prend pas en compte ce qui lui est demander dans mon model

Merci d'avance

4 réponses


Maenhyr
Réponse acceptée

Non pas obligatoirement la fonction save(). En réalité la fonction save() appelle la fonction validate(). Si tu veux faire les tests de ton Model tu dois les appeler comme ceci (dans le Controller) :

$this->User->set($this->request->data);
if ($this->User->validates()) {
    // les donnees sont validees
} else {
    // on recupere les erreurs de validation
    $errors = $this->ModelName->validationErrors;
}

Ceci est dans le cas où tu ne souhaites que valider les données. Si tu souhaites les enregistrer dans la base de données, il te suffit de faire un save().

Salut, fais tu appel à la fonction save() dans le controller pour le validate de tes champs mail1 et mail2 ?

Il faut obligatoirement réaliser l'action save pour que les règles du model soit validé ?

Merci pour les informations, je penser que les règles du model n'étais pas liée avec l'une de ces function.