Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/09/2011, 14h06   #1
Membre à l'essai
 
Homme
Inscription : septembre 2011
Messages : 54
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 54
Points : 20
Points : 20
Par défaut 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 php :
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 :
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 :
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.
shakly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 13h06   #2
Futur Membre du Club
 
Inscription : juillet 2010
Messages : 18
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 18
Points : 18
Points : 18
Bonjour,

Est ce qu'en enlevant
Code :
1
2
3
4
"
else {
	$this->redirect('homepage');
}"
ne résoudrait il pas ton problème?

Si le formulaire n'est pas valide, il n'y pas de redirection, il voit donc les erreurs.
thomas974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 14h00   #3
Membre à l'essai
 
Homme
Inscription : septembre 2011
Messages : 54
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 54
Points : 20
Points : 20
J'ai essayé mais symfony fait une erreur indiquant qu'il ne trouve pas le template DoLogin.
shakly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2011, 14h07   #4
Membre régulier
 
Homme Jordane
Étudiant
Inscription : février 2010
Messages : 59
Détails du profil
Informations personnelles :
Nom : Homme Jordane
Âge : 23
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2010
Messages : 59
Points : 81
Points : 81
thomas a raison il n'y a pas de raison pour le redirigé si le form est invalide.
Par contre tu vas surement avoir un message d'erreur disant que le template doLoginSuccess n'existe pas. soit tu le crées soit tu lui attribut loginSuccess comme template.
Joauc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 09h05   #5
Membre à l'essai
 
Homme
Inscription : septembre 2011
Messages : 54
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 54
Points : 20
Points : 20
Le problème est que je ne peut pas attribuer de template car il s'agit d'un formulaire imbriqué dans toutes mes pages à l'aide d'un components.
shakly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 10h11   #6
Futur Membre du Club
 
Inscription : juillet 2010
Messages : 18
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 18
Points : 18
Points : 18
Essaye de sauvegarder l'url de la page où était l'utilisateur et forward vers ce lien.
thomas974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2011, 19h42   #7
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Tu peux récupérer l'url précédente dans l'objet sfRequest de symfony.

L'idée est alors de rediriger vers cette url.

Il faut que ton componement soit alors capable de conserver les données d'authentifications fausses et de les utiliser lors du ré affichage de la page, pas infaisable mais pas trop simple.

L'autre solution est de faire l'authentification en AJAX.

Le plus simple est d'utiliser la première méthode si l'authentification est valide et de passer par une URL a part si l'authentification n'est pas réussie (en changeant de page). Il reste possible de conserver l'url précédente (en session) et de faire une redirection une fois l'authentification réussie. C'est plus simple.

Pense à jeter un œil au plugin sfDoctrineGuardPlugin qui gère les authentification et les user ainsi que leurs droit d'une manière plus que propre.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h35.


 
 
 
 
Partenaires

Hébergement Web