Bonjour à tous,
J'ai un petit soucis au niveau de ma page d'authentification.
Sur cette page l'utilisateur peut soit se connecter, soit s'inscrire. Le problème viens du fait qu'il y a deux champs identiques dans ces deux formulaires : username et password.
Je voudrais bien les renommer mais je perdrai dans ce cas les regles de nommage de cakePHP...
Je me trompe peut etre? Sinon est ce que quelqu'un a déjà eu ce type de problème.
Merci et bonne journée
Bonjour à tous,
Tout d'abord merci à tous pour vos réponses et dsl pour le retard de ma réponse.
@Hotgeart : Comme tu le fait remarquer ce n'est pas dérangeant d'avoir les champs déja remplis une fois l'inscription faites.
@coloo : J'aime aussi les if... Et si je n'avais pas voulu avoir mes deux form sur la même page j'aurai pris cette solution.
@Macsim : Dsl j'ai pas eu le tps de tester ta solution car je suis passé par autre chose : j'ai renommé "username" et "password" en "username1" et "password1" puis dans la fonction login de mon UsersController j'ai mis ca :
$this->request->data'User']'username'] = $this->request->data'User']'username1'];
$this->request->data'User']'password'] = $this->request->data'User']'password1'];
En cas d'erreur d'identifiants les champs sont clearés.
T'as solution est sans doute plus jolie, je la met de coté.
En tout cas merci et bonne soirée
Du tout :) .
Tu crées tes formulaires normalement. Cependant, tu dois donner une action pour pas que CakePHP se mélange les pinceaux.
$this->Form->create('User', array('action' => 'login'));
&&
$this->Form->create('User', array('action' => 'signup'));
Bonjour,
Merci de votre réponse Hotgeart. Mais mes actions sont déjà défini dans les deux éléments suivants:
login.ctp:
<?php echo $this->Form->create('User',array(
'class' => 'navbar-form pull-right',
'action' => 'login'
)); ?>
&&
sign.ctp:
<?php echo $this->Form->create('User',array(
'class' => 'well span4 form-horizontal',
'action' => 'sign'
)); ?>
Les actions fonctionnent correctement, je peux enregistrer un utilisateur et le connecter, cependant si jamais l'utilisateur entre un username ou un password incorrect pour se logger ce dernier est recopié dans le formulaire register ce qui ne me convient pas...
Merci et bonne journée.
Alors la franchement je sais pas. La comme ça à froid la seule méthode que je vois serai de faire le barbare. C'est à dire d'écraser la session. Fait un debug des sessions pour tes deux </form> pour voir si tu n'a pas un param qui pourrait t'aider à cibler tel ou tel </from>.
Après est ce vraiment dérangeant ? Dans le sens ou si je pense être déjà inscrit et que je remarque que non l'input username pour l'inscription est déjà rempli ce qui est plutôt sympa.
Pourquoi tu ne ferais pas qu'un seul formulaire ? avec une checkbox "j'ai déja un compte" ou "me connecter". Après un if data][checkbox]==1 etc
Enfin ces de ce côté que j'irais, voir mettre un champs hidden dans chaque formulaire avec une valeur différente. Puis faire une condition via cette valeur =).
Oui j'aime les if :p
Utilise les Elements, tu gardes tes deux formulaires dans deux fichiers distincts :
/Elements/loginForm.ctp (Ton login.ctp actuelle)
/Elements/registerForm.ctp (Ton sign.ctp actuelle)
J'ai l'habitude de mettre le type d'element après le nom (Form,Slide,Info etc...) tu peux laisser sign.ctp et login.ctp si tu prefères)
Sur la page /View/User/login.ctp tu mets
$this->element('loginForm'); $this->element('registerForm');
ou
$this->element('login'); $this->element('sign'); // Si tu as gardé tes noms de fichiers.
Good luck