-- Paul <z...@zooluserver.com> wrote
(on Thursday, 01 July 2010, 04:26 PM -0400):
> Would be the benefit or disadvantage of using an action controller
> instead?  Is it only that the action controller plugin might be
> called multiple times?

You have a single view object. My consideration is that a plugin is
typically executed once (unless it's a pre/postDispatch() hook). So if
you know the items need to be injected for all controllers in a module,
I'd do it in a plugin. If you may want to control _which_ controllers
in a module inject the variables, I'd go with an action helper.

> On 7/1/2010 8:58 AM, Matthew Weier O'Phinney wrote:
> >-- debussy007<debussy...@gmail.com>  wrote
> >(on Thursday, 01 July 2010, 01:07 AM -0700):
> >>Hi, I have a module called let's say products. In every view file of module
> >>products I need some common variables. Thus I want to avoid having the same
> >>code over and over in every action of products module to set those 
> >>variables.
> >>So I made a Plugin and in its preDispatch function I check if a request is 
> >>made
> >>for the module products: if($request->getModuleName() === 'products') { // 
> >>TODO
> >>} Now I want to set some variables for the view files, but how ? (PS: I 
> >>don't
> >>make a ViewHelper as I don't need a common code snippet for the views, I 
> >>really
> >>need some variables which I'd use here and there in the view files of 
> >>products
> >>module). Thank you for any help !!
> >You're on the right track. What you need to do is get the View object.
> >This will be available in one of two ways.
> >
> >  * Should always work, unless you are not using the ViewRenderer:
> >
> >    $vr = 
> > Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
> >    $view = $vr->view;
> >
> >  * If you're enabling the "view" application resource, you can grab it
> >    from the bootstrap:
> >
> >    $front = $this->getFrontController();
> >    $bootstrap = $front->getParam('bootstrap');
> >    $view = $bootstrap->getResource('view');
> >
> >Put one of these in your plugin method, and you're ready to go:
> >
> >     class Some_Plugin extends Zend_Controller_Plugin_Abstract
> >     {
> >         public function preDispatch(Zend_Controller_Request_Abstract 
> > $request)
> >         {
> >             if ($request->getModuleName() != 'products') {
> >                 return; // bail if wrong module
> >             }
> >
> >             $front = $this->getFrontController();
> >             $bootstrap = $front->getParam('bootstrap');
> >             $view = $bootstrap->getResource('view');
> >
> >             $view->assign(array(
> >                 // some variables...
> >             ));
> >
> >             // done
> >         }
> >     }
> >
> 

-- 
Matthew Weier O'Phinney
Project Lead            | matt...@zend.com
Zend Framework          | http://framework.zend.com/
PGP key: http://framework.zend.com/zf-matthew-pgp-key.asc

Reply via email to