Formulaire dans components
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:
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:
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:
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
Code:
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 } |
Le but est que l'utilisateur reste sur la page ou il à essayé de ce loguer avec les messages d'erreur.
Merci de votre aide.