Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > Autres composants
Autres composants Forum de support sur les autres composants de Zend Framework.
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 08/01/2008, 15h12   #1
Membre du Club
 
Développeur Web
Inscription : décembre 2005
Messages : 110
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2005
Messages : 110
Points : 45
Points : 45
Par défaut [Zend_Session] Redirections et envoi des variables de vue

Bonjour,

Je suis en train de me heurter à un petit problème qui entraîne quelques questions derrière lui.

Je travaille sur la page d'authentification de mon appli. J'ai donc mes 2 champs login et password, mon controller, mes fonctions loginAction et logoutAction, etc, etc...

En fonction du résultat de l'authentification, et également en fonction du type d'utilisateur qui vient de s'authentifier, mon controller redirige sur différents modules, et en tout les cas pas sur la vue qui porte le nom de l'action. En l'occurence, je n'ai pas de vue login.phtml.

Le souci est que je dois transmettre différentes variables aux vues. Je pense par exemple à des variables telles qu'un message d'erreur, ou bien les nom/prénom de l'utilisateur.
Lorsque l'on fait une redirection ( $this->_redirect('...'); ), les variables initialisées avec la technique $this->view->maVariable = "valeur"; ne sont pas transmises.
Pour régler le problème, on m'a conseillé d'utiliser les sessions.
Or je risque d'avoir besoin de ça à de nombreuses reprises dans mon appli, et je trouve un peu lourdingue d'utiliser les sessions à chaque fois, et pas très propre d'utiliser une autre solution qui serait de passer les variables par les url.

Personne n'a d'autre solution ? Comment avez-vous gérer la chose ?

Merci !
fadeninev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2008, 15h52   #2
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
Pour l'affichage du message d'erreur, je trouve que c'est propre de mettre cette information dans l'URL puisque on respecte bien le principe d'une URL qui affiche une information et donc si on modifie l'URL on aura un autre affichage
Et pour le nom de l'utilisateur, si j'ai bien compris il s'agit de l'utilisateur qui est connecté donc c'est normal que l'information se trouve dans la session, non ?
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2008, 16h24   #3
Membre du Club
 
Développeur Web
Inscription : décembre 2005
Messages : 110
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2005
Messages : 110
Points : 45
Points : 45
Pour l'utilisateur oui, mais je pense que j'aurai pas mal d'autres cas de redirections (en dehors des messages d'erreurs)...
Je trouve que ça fait un peu bricolage de tout caser dans les sessions ou d'avoir des urls à rallonge de 3km de long

Merci pour ta réponse
fadeninev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2008, 17h38   #4
Membre éclairé
 
Homme Yann
Développeur Web
Inscription : avril 2005
Messages : 280
Détails du profil
Informations personnelles :
Nom : Homme Yann
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 280
Points : 366
Points : 366
Envoyer un message via MSN à yannux
Les sessions sont faites pour ça....
Dans tous les cas c'est de loin une solution plus propre que de mettre ça en url...
yannux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2008, 17h51   #5
Membre du Club
 
Développeur Web
Inscription : décembre 2005
Messages : 110
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2005
Messages : 110
Points : 45
Points : 45
Ok merci à vous deux, je n'ai d'autres choix que de faire ça alors

fadeninev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 16h46   #6
Candidat au titre de Membre du Club
 
Inscription : novembre 2003
Messages : 17
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 17
Points : 13
Points : 13
Par défaut zend_registry

Bonjour,
je suis confronté au même probleme, mais dans mons cas j'ai utilisé la methode forward avec des parametres.
Sinon, j'avais pensé à utiliser zend registry pour faire de ma vue un singleton et au debut de chaque controller me servir de ce singleton comme vu.

Au final, ça passe par des sessions mais c'est transparent.
bbmt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2008, 10h36   #7
Membre du Club
 
Développeur Web
Inscription : décembre 2005
Messages : 110
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2005
Messages : 110
Points : 45
Points : 45
Pour ma part j'ai finalement utilisé les sessions. C'est pas mal sauf qu'il ne faut pas oublier d'inclure les classes dont on se sert dans la session avant de déclarer la session, sinon ça ne fonctionne pas.
fadeninev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2008, 11h06   #8
Membre Expert
 
Avatar de riete
 
Homme Thierry
NFC & DevWeb
Inscription : avril 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 51
Localisation : France

Informations professionnelles :
Activité : NFC & DevWeb
Secteur : Bâtiment

Informations forums :
Inscription : avril 2006
Messages : 1 175
Points : 1 366
Points : 1 366
Je prends la discussion en route.
Pour ma part, j'ai aussi choisit la solution des variables de SESSION pour l'authentification de mes utilisateurs. J'ai eu un peu de mal à mettre au point un mécanisme "transportable", mais maintenant, je l'utilise pour toute sorte de client web, y compris les mobiles.
C'est une merveille.

Néanmoins, je te met en garde sur l'utilisation de COOKIES pour "reconstruire" ta session en cas de fermeture du navigateur. Dans le cas de machines qui sont susceptibles d'être utilisées par plusieurs personnes, il faut être prudent. Et certain Navigateur en particulier les mobiles ont tendances à avoir les COOKIES assez persistant

Riete
riete est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2008, 11h20   #9
Membre éclairé
 
Homme Yann
Développeur Web
Inscription : avril 2005
Messages : 280
Détails du profil
Informations personnelles :
Nom : Homme Yann
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 280
Points : 366
Points : 366
Envoyer un message via MSN à yannux
Citation:
Envoyé par riete Voir le message
J... je l'utilise pour toute sorte de client web, y compris les mobiles...
C'est à dire ? quels genres de soucis du peut avoir ? ( Hormis les cookies comme tu précises déjà )
yannux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2008, 12h20   #10
Membre Expert
 
Avatar de riete
 
Homme Thierry
NFC & DevWeb
Inscription : avril 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Nom : Homme Thierry
Âge : 51
Localisation : France

Informations professionnelles :
Activité : NFC & DevWeb
Secteur : Bâtiment

Informations forums :
Inscription : avril 2006
Messages : 1 175
Points : 1 366
Points : 1 366
Je n'ai pas eu de soucis à part les Cookies. Cela demande juste pas mal de rigueur au niveau code pour éviter la persistance parasite de certaines variables d'un script à l'autre.
riete est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2008, 14h00   #11
Membre éclairé
 
Homme Yann
Développeur Web
Inscription : avril 2005
Messages : 280
Détails du profil
Informations personnelles :
Nom : Homme Yann
Âge : 27
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 280
Points : 366
Points : 366
Envoyer un message via MSN à yannux
oki merci
yannux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2008, 23h32   #12
Candidat au titre de Membre du Club
 
Inscription : novembre 2003
Messages : 17
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 17
Points : 13
Points : 13
je viens de penser à un autre moyen, un peu compliqué mais bon.
Je crois que les helper d'action sont persistant donc le helper viewrenderer est persistant.
On lui instancie une vue avec la methode setview :
Code :
1
2
3
 
$viewManager = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
$viewManager->setView(mavue)
Si on le fait le plus tot possible, c'est a dire dans le bootstrap, on devrait avoir la meme vue dans tous les controller.

A verifier.....
bbmt est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h25.


 
 
 
 
Partenaires

Hébergement Web