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 !
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é');
}
}
}
}