Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Je reviens de vacances avec les idées plus claires, et j'ai enfin mieux cerné mon problème, pour faire plus propre, j'ai créé un nouveau topic.
Voici mon problème :
- Lorsqu'un utilisateur s'authentifie dans mon application je récupère un tableau de paramètres avec diverses informations (nom, prenom, etc.).
J'aimerai pouvoir afficher certaines de ces informations systématiquement, dans le header de mon layout ($this->render('header.phtml').
Pour infos, mon utilisateur authentifie dans un contrôleur AuthController.
Il est très facile de passer des variables, depuis le contrôleur, dans la vue correspondante. Mais lorsqu'il s'agit d'une autre vue, comme c'est le cas pour mon header, c'est tout de suite moins évident.
Comment feriez-vous ?
Ca peut paraître tout bête dans un développement traditionnel, mais je ne parviens pas à trouver de réponse simple et facile à mettre en oeuvre dans le cadre MVC du Zend Framework
Merci
Hors ligne
Hello,
Où sont les infos sur ton utilisateur ? L'idéal c'est dans la même table de base de données que les données d'authentification, ainsi avec Zend_Auth_Adapter_DbTable tu effectue l'authentification. Le résultat stocké en session peut alors contenir toutes les infos dont tu as besoin.
$user = Zend_Auth::getInstance()->getIdentity(); echo $user->nom . ' ' . $user->prenom;
A+
Hors ligne
salut ,
si j'ai bien compris ,ce que tu cherche est l'aide de vue 'partial' .
par exemple, tu passe a la vue deux variables 'nomUser' et 'prenomUser' .
donc tu n'utilise plus render :
$this->render(header.phtml);
mais :
<?php echo $this->partial('header.phtml', array( 'nom' => $this->nomUser, prenom => $this->prenomUser )); ?>
dans header.phtml
<ul> <li>nom: <?php echo $this->escape($this->nom) ?></li> <li>prenom: <?php echo $this->escape($this->prenom) ?></li> </ul>
en fait j'ai etais confronté au meme probleme mais j'ai creé un aide de vue qui me renvoie un string que je l'affiche directement dans ma vue avec un echo , j'ai mis le code de ce view helper ici si ça t'interesse
la partie de la doc qui traite les partials est pas mal .
j'espere c'est ce que tu cherche
bon courage
Dernière modification par oswalidos (28-08-2009 03:41:24)
Hors ligne
et l'aide de vue getAuth() que j'ai trouvé sur ce forum ne convien pas à faire ceci?
Hors ligne
mikaelkael a écrit:
Hello,
Où sont les infos sur ton utilisateur ? L'idéal c'est dans la même table de base de données que les données d'authentification, ainsi avec Zend_Auth_Adapter_DbTable tu effectue l'authentification. Le résultat stocké en session peut alors contenir toutes les infos dont tu as besoin.Code:
$user = Zend_Auth::getInstance()->getIdentity(); echo $user->nom . ' ' . $user->prenom;A+
A quel endroit veux-tu récupérer ton instance Zend_Auth ?
Hors ligne
Dans ton header directement.
Hors ligne
En fait mon instance d'authentification ne comprend qu'un nom d'utilisateur et un mot de passe. En revanche, je récupère un tableau de paramètres qui m'intéresse, et je le stocke en session (peut être cela serait plus intéressant de le récupérer dans le registre Zend !?).
Bon je vais essayer de récupérer mes infos en session depuis le header
Hors ligne
Effectivement ça marche, me reste plus qu'à trouver comment détruire en profondeur des variables de session.
Merci à tous
Hors ligne
Bonjour,
Vincent a écrit:
A quel endroit veux-tu récupérer ton instance Zend_Auth ?
mikaelkael a écrit:
Dans ton header directement.
Ce n'est pas anti-MVC que d'accéder à un tel objet directement dans un fichier de vue ?
Il n'existerait pas une manière plus "logique" d'ajouter le contenu dans une propriété de la vue ($this->view->headerData) comme on le ferait dans un contrôleur, pour qu'on puisse passer les données en paramètre dans le partial (genre $this->partial(<file>, $this->headerData) ) ?
(peut-être un plugin ? ou autre ?)
La manipulation d'objets autre que $this dans les vues est une problématique à laquelle j'ai du mal à trouver des alternatives quand j'y pense...
Hors ligne
Merci Eureka, tu résumes le fond de ma pensée et ce pourquoi ça m'a posé problème.
Hors ligne