Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour à tous,
J'ai créé un plugin qui gère toute la partie d'authentification du membre.
Je voudrais profiter de ce plugin pour envoyer également les variables d'authentification à la vue. Je fais donc ceci :
$this->view->user = Zend_Auth::getInstance()->getIdentity()
Evidemment, cela ne marche pas.
Strict Standards: Creating default object from empty value in *************
Même si je pense que la vue n'est pas accessible depuis un plugin en preDispatch, il doit y avoir une solution mais je n'arrive pas à la trouver.
Avez vous une piste ?
Hors ligne
Tu peux faire les opérations suivantes :
- instancier ta vue dans le bootstrap (tu peux la mettre dans la registry si tu veux y accéder n'importe où)
- tu peux ajouter ce que tu veux dans ta vue depuis ton plugin
- il faut ensuite assigner cette vue à ton contrôleur à l'aide d'un helper
Dans le tuto http://www.kitpages.fr/zf_integrerSmarty.php j'utilise ce mécanisme pour une utilisation différente, mais tu peux faire la même chose avec la vue normale (Zend_View).
A+, Philippe
Hors ligne
Je veux simplement faire une action en plugin pour éviter de le faire dans chaque bloc init de tous mes controllers. la particularité, c'est que cette action agit sur la vue. Est-ce bien la bonne solution que d'instancier ma vue ou est ce que c'est beaucoup de manipulation pour peu de chose finalement ?
En gros, est-ce que ma réflexion est bonne ou est-ce que je pars dans le mauvais sens?
Hors ligne
Je suis régulièrement confronté à ce problème et j'ai parfois besoin qu'un plugin envoie un message à la vue. Dans ce cas, j'utilise la méthode que j'ai décrite. (en fait j'utilise systématiquement cette méthode pour toutes mes applis...)
Sinon si tu ne veux pas entrer là dedans et si ton traitement le permet, tu peux déplacer ton traitement dans un helper. Dans ce cas tu as accès à la vue standard (avec un $this->getActionController()->view).
Mais dans le cas d'un authentification, ça me paraît mieux placé dans un plugin effectivement...
A+, Philippe
Hors ligne
Oki. J'avais besoin de cette confirmation pour être sure d'aller dans la bonne direction.
Le tuto que tu m'as donné en lien me semble assez logique. Je testerai tout cela ce soir et je vous informerai sur le résultat.
Merci.
Hors ligne
Je suis en train de faire les tests et une fois devant le code, la pratique est plus compliquée que la théorie. J'ai donc plusieurs question :
1) Voilà comment je rajoute un plugin à mon application :
$frontController->registerPlugin(new My_Plugin_Auth());
A partir de là, je ne vois pas comment faire pour donner la vue à mon plugin. Dans ton exemple, tu utilises un plugin.
Quel est le moyen de passer la vue à mon plugin ?
2) Dans le plugin, comment renvoyer les informations que je veux à ma vue?
Hors ligne
Utilise le helperBroker, il contient ViewRenderer qui est le seul à connaitre la vue.
On prévoit pour ZF2 une meilleure intégration de la vue directement dans FC, ce qui n'est pas le cas actuellement, d'où l'horrible code :
$vr = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
$vr->init(); // init() du helper si premier passage dedans
$view = $vr->view; //$view est la vue
Hors ligne
Oki.
Donc ça marche bien. J'arrive à envoyer une variable à ma vue depuis mon plugin.
Il me reste toute de même une chose à faire. J'utilise un layout :
<html> <head> <?php echo $this->headMeta(); ?> <?php echo $this->headTitle();?> <?php echo $this->headLink(); ?> </head> <body> <div id="bodyall"> <?php echo $this->action('header','part','formatting'); ?> <?php echo $this->action('advertareaheader','part','advert'); ?> <div id="box_container"> <?php echo $this->layout()->content; ?> <?php echo $this->action('rightmenu','formatting','news'); ?> <div class="cleaner"></div> </div> <?php echo $this->action('footer','part','formatting'); ?> </div> </body> </html>
Et ce que je veux faire, c'est d'afficher le contenu de $this->user depuis mon fichier part/header.phtml qui est inclut par le layout mais rien ne s'affiche.
Pourquoi n'est-il pas possible de le faire depuis l'action ?
[edit]
En fait, je vais utiliser le duo plugin+helper. Avec le plugin je gère l'authentification et avec le helper, je gère les informations sur le user et le passage des infos aux différentes vues.
Je ne trouve pas de meilleure solution...
Dernière modification par slaughter (16-08-2008 01:54:54)
Hors ligne
Pages: 1