Bonjour, voilà je me tourne vers vous car cela fait 3 jours que je cherche désespérément la solution à mon problème.

Ma page index dans le contrôleur User possède deux formulaires, le premier renvoie vers mon action register et l'autre vers l'action login.

Mon formulaire register regroupe les champs :
* User.username
* User.0.mail
* User.0.password
* User.1.password

Mon formulaire login regroupe les champs :
* User.1.mail
* User.2.password

Ma table SQL Users possède les champs :
* id
* username
* mail
* password
* created

Comment faire pour faire une validation dans mon modèle de ces champs ?
Une règle sur le champ mail va-t'il s'appliquer sur tout mes champs concerné (User.0.mail, User.1.mail) ?
Comment faire ensuite pour que la fonction du composant Auth->login() prenne en compte mon indice de tableau supplémentaire ($this->request->data contient un tableau Users qui contient un tableau 0,1 ou 2 qui contienne mes valeur de champs mail, password) ?

Merci pour votre aide !

1 réponse


Tu as pris le problème dans le mauvais sens

login.ctp

<?php
            //formulaire de connexion
            echo $this->Form->create('User');
            echo $this->Form->input('mail');
            echo $this->Form->input('password');
            echo $this->Form->hidden('is_login',array('value'=>true));
            echo $this->Form->submit('Connexion');
            echo $this->Form->end();
            ?>
            <?php
            //formulaire d'enregistrement
            echo $this->Form->create('User');
            echo $this->Form->input('username');
            echo $this->Form->input('mail');
            echo $this->Form->input('password1');
            echo $this->Form->input('password2');
            echo $this->Form->hidden('is_register',array('value'=>true));
            echo $this->Form->submit('Créer mon compte');
            echo $this->Form->end();
            ?>

UsersController.php

public function login() {
        if ($this->request->is('post')) {
            if ($this->request->data'User']'is_login']) {
                if ($this->Auth->login()) {
                    $this->redirect($this->Auth->redirect());
                } else {
                    $this->Session->setFlash('Identifiant ou mot de passe incorect');
                }
            }
            if ($this->request->data'User']'is_register']) {
                $this->User->create();
                if ($this->User->save($this->request->data)) {
                    $this->Session->setFlash('Nouveau compte créée');
                } else {
                    $this->Session->setFlash('Votre compte n\'a pas pu être enregistré');
                }
            }
        }
    }