Bonjour,
J’essaie de faire un formulaire de connexion pour les membres, le formulaire fonctionne et maintenant j'aimerai le placer dans un components.
Le problème est qu'a la fin de chaque action je redirige vers la page d'acceuil donc aucun message d'erreur n'est affiché.
users/actions/action.class
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 class userActions extends sfActions { public function executeDoLogin(sfWebRequest $request) { $this->forward404Unless($request->isMethod('post')); $this->form = new LoginForm(); $this->form->bind($request->getParameter('login')); // remplissage du formulaire if ($this->form->isValid()) { $parametre = $request->getParameter('login'); $membre = Doctrine::getTable('user')->findOneByLogin($parametre['login']); // On set la session de l'utilisateur. $this->getUser()->setAuthenticated(true); // On stocke les infos utiles dans la session utilisateur $this->getUser()->setAttribute("id", $membre->getId()); $this->redirect('homepage'); } else { $this->redirect('homepage'); } } public function executeDeco(sfWebRequest $request) { // Supprime l'état identifié de l'user $this->getUser()->setAuthenticated(false); // Supprime tous les accès de l'user $this->getUser()->clearCredentials(); // Supprime les valeurs de la sessions que l'on a stocké $this->getUser()->getAttributeHolder()->remove('id'); $this->redirect('homepage'); } }
users/actions/components.class.php
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 class userComponents extends sfComponents { public function executeLogin(sfWebRequest $request) { $this->form = new LoginForm(); } }
users/template/_login.php
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <?php if ($sf_user->isAuthenticated() == true) { ?> <form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post"> <?php echo $form; ?> <input type='submit' value="Connection" /> </form> <?php } else { echo '<a href="'.url_for('disconnect').'">Deco</a>'; } ?>
routing,yml
Le but est que l'utilisateur reste sur la page ou il à essayé de ce loguer avec les messages d'erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 checkLogin: url: /check_login.html param: { module: user, action: doLogin } disconnect: url: /disconnect.html param: { module: user, action: deco }
Merci de votre aide.
Partager