Bonjour cella fait maintenant deux jours que je suis a la recherche d'un moyen de vérifier lors de la soumission d'un formulaire d'inscription, si le pseudo existe déjà, si le mail existe également, ainsi que de savoir si une clé beta est déjà utilise ou non.

9 réponses


kal-el
Réponse acceptée

Une fois que tu as mis tes validations dans ton model, il te suffit de faire sa dans le controlleur :

$this->User->create($this->request->data);
if($this->User->validates()){
    // Ensuite tu sauves
}

Il suffit a mon avis de faire un simple find avec conditions :

$user = $this->User->find('first', array(
    'conditions' => array(
        'pseudo' => $this->request->data'User']'pseudo'],
        'email' => $this->request->data'User']'email'],
        'key' => $token_key
    )
));
if(!$user){
    if( $this->User->save($this->request->data) ){
        // success
    }
}else{
    $this->Session->setFlash('Erreur, vos identifiants existent deja');
}

Quelque chose dans ce genre je pense. Essayes et dis moi

ca ne fonctionne pas

Non il a plus rapide dans ton model User :

<?php
 public $validate = array(
        'username' => array(
            'uniq' => array(
                'rule' => 'isUnique',
                'message' => "Erreur : pseudo déjà utilisé"
            )
        )
    );
?>

Cherche le mot clef : isUnique. Sur ce page :
http://book.cakephp.org/2.0/fr/models/data-validation.html

Effectivement toutes les règles de validation sont à mettre dans les modèles par pitié :)

N'oublie pas non plus des règles de bases comme 'notEmpty'

merci mais je ne vois pas comment l’intégrer dans le controller

<?php
class UsersController extends AppController {
    function login(){
        if($this->request->is('post')){
            if($this->Auth->login()){
                return $this->redirect($this->Auth->redirect());    
            }else{
                $this->Session->setFlash("Login ou mot de passe incorrect","notif",array('type' => 'alert-error'));
            }
        }
    }
    function logout(){
        $this->Auth->logout();
        $this->Session->setFlash("Vous êtes maintenant déconnecteé","notif",array('type' => 'alert-success'));
        $this->redirect("/");
    }
    function register(){
    }

    function dashboard(){
    }
    function admin_index(){
        $d'users'] = $this->Paginate('User');
    }
    function admin_delet($id){
        $this->User->delete($id);
        $this->Session->setFlash("L'utilisateur a bien été supprimé","notif", array('type' => 'alert-success'));
        $this->redirect($this->referer());
    }
}
?>

Il ne faut pas l’intégrer dans ton Controller mais dans ton Model User (..Model/User.php)

contacte moi sur skype que je t'explique mieux -> redkill2108

Je préciserais également qu'il est souvent intelligent pour des raisons évidentes de mettre les règles de validation dans un constructor.