Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour les zenders's
Voila mon pti problème en soit mais qui me cause de gros problèmes....
- j'ai une action quel conque IndexAction dans mon controller IndexController.
- Dans cette action j'ai un variable $this->view->maVariable = "mon contenu"
- Dans ma vue index.phtml je la retrouve avec $this->maVariable
Jusqu'à la on va dire pas de problème.
J'ai créé un plugin dans library/App/Plugin qui fonctionne bien il n'y a aucun souci avec (je crois)
Dans ce plugin et dans la méthode
public function postDispatch(Zend_Controller_Request_Abstract $request)
je veux modifier ma variable de vue $this->view->maVariable
Donc pour récupérer ma "view" je fais soit
$frontController = Zend_Controller_Front::getInstance(); view = Zend_Controller_Front::getInstance()->getParam('bootstrap')->getResource('view');
ou soit
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer'); $view = $viewRenderer->view;
Donc jusqu'ici pas de problème
et donc tout naturellement je me dit pour réaffecter ma variable j'ai juste à faire :
$view->maVariable = "mon nouveau contenu";
mais cela ne fonctionne pas car dans ma view index.phtml j'ai tout dans ma variable maVariable "mon contenu"
Voila un peu l'exposé de mon problème,bug,erreur..... je ne sais pas
Si vous voulez plus d'info pour m'aider ou me donner quelque piste hésité pas à ma demander
Hors ligne
Heu le post dispatch ne vient pas après le render ??
A+JYT
Hors ligne
postDispatch() est appelée après qu'une action n'ait été distribuée
Donc après que l'action soit exécutée mais je sais pas si c'est avant ou après le render.
Mais dans mon controller j'ai un méthode postDispatch ou je défini des variables qui sont accessibles dans la vue.....
Je me dit que le postDispatch d'un plugin agit juste après celui du controller et donc permet de redéfinir des variables nan?
Hors ligne
@Geoffrey
Je ne peux pas faire en preDispatch dans le plugin sinon je n'aurais pas les variables créées dans l'action.
Hors ligne
Normalement le schéma n'est pas comme sa :
preDispatch (controller) + preDispatch (plugin)
Action
postDispatch (controller) + postDispatch(plugin)
=> View
<_>
Hors ligne
Hello,
Non, le plugin interviens autour du process de dispatch des controlleurs d'action.
http://nethands.de/download/zenddispatch_en.pdf
http://www.slideshare.net/polleywong/ze … h-workflow
Donc c'est (en virant une partie du process) :
Plugin : preDispatch
Action Helpers : preDispatch
Action Controller : preDispatch
Action Controller : postDispath
Action Helpers : postDispatch
Plugin : postDispatch
Pour ta variable je pense que la vue est automatiquement rendue dans le buffer après le process de dispatch des controlleurs d'action, à vérifier.
A+ benjamin.
Dernière modification par Delprog (10-05-2010 12:38:38)
Hors ligne
Ah oui je comprend ce que tu veux dire.
Par rapport à ça comment je pourrais faire pour modifier ma variable et la passer à la vue?
Il faut que je fasse un nouveau render, si oui comment je pourrais faire?
Merci pour vos réponse
Hors ligne
Alors voilà comment j'ai fait :
class App_Plugin_MyPlugin extends Zend_Controller_Plugin_Abstract{ public function preDispatch (Zend_Controller_Request_Abstract $request){ $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); $viewRenderer->setNeverRender(true); } public function postDispatch(Zend_Controller_Request_Abstract $request){ $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); $view = $viewRenderer->view; $view->mavariable = 'new value'; $viewRenderer->render(); } }
J'aimerais savoir si c'est la bonne façon de faire.
Merci pour vos réponse
Hors ligne