Bonsoir,

J'utilise CakePhp 1.3 et je souhaiterais que, lorsque j'enregistre un nouvel utilisateur, Cake ne vérifie pas que le nom de l'utilisateur est unique. Par contre, je voudrais que ce soit le champ virtuel user_name qu'il le soit.
Je n'ai pas précisé dans mon modèle la règle isUnique pour le champ nom, mais Cake l'utilise par défaut.
Je ne sais pas comment la désactiver.

Merci pour votre aide.

Pour info, voici le code de mon modèle :

<?php
class User extends AppModel {
    var $name = 'User';
    var $useDbConfig = 'default2';
    var $validate = array(
            'nom' => array(
                'alphaNumeric' => array(
                    'rule' => 'alphaNumeric',
                    'required' => true,
                ),
                'between' => array(
                    'rule' => array('between', 3, 15), 
                )
            ),
            'prenom' => array(
                'alphaNumeric' => array(
                    'rule' => 'alphaNumeric',
                    'required' => true,
                ),
                'between' => array(
                    'rule' => array('between', 3, 15),
                ),
                'notEmpty' => array(
                    'rule' => 'notEmpty',
                    'on' => 'create',
                )
            ),
            'password' => array(
                'rule' => array('minLength', '8'),
            ),
            'mail' => array(
                'rule' => array('email', false),   
            ),
                        'user_name' => array(
                'isUnique' => array(
                    'rule' => 'isUnique',
                    'on' => 'create',        
                )
                        )
        );
    function __construct($id = false, $table = null, $ds = null) {
        $this->virtualFields'user_name'] = sprintf('CONCAT(%s.nom, " ", %s.prenom)', $this->alias, $this->alias);
        $this->validate'nom']'alphaNumeric']'message'] = __('Seulement des chiffres et des lettres !',true); 
        $this->validate'nom']'between']'message'] = __('Entre 3 et 15 caractères !',true); 
        $this->validate'user_name']'isUnique']'message'] = __('Identifiant déjà utilisé !',true); 
        $this->validate'prenom']'alphaNumeric']'message'] = __('Seulement des chiffres et des lettres !',true); 
        $this->validate'prenom']'between']'message'] = __('Entre 3 et 15 caractères !',true); 
        $this->validate'prenom']'notEmpty']'message'] = __('Le prénom doit être complété !',true); 
        $this->validate'password']'message'] = __('Un mimimum de 8 caractères est nécessaire !',true); 
        $this->validate'mail']'message'] = __('Merci de saisir une adresse mail valide !',true); 
        parent::__construct($id, $table, $ds);
   }
}
?>

3 réponses


Jerry Wham
Auteur
Réponse acceptée

Bon, je suis un boulet. J'avais juste oublié de vider le cache et ses sous dossiers. Mes modifications n'étaient donc pas prises en compte.
Problème résolu. Merci pour ton aide.

Pas trop saisi ton champs username n'existe pas jvois pas ou tu veux en venir

Tu ne dors jamais ??? ^_^
Merci pour ta réponse : Ce que je veux c'est que la validation ne se fasse pas sur le champ nom. Or, alors que la règle n'est pas déclarer dans mon modèle, cake la vérifie quand même... (La validation sur user_name est secondaire et pas forcément nécessaire).