I forgot to mention that the controllers of the 2 modules are dispatched, but only the same view gets rendered.
--- On Mon, 5/18/09, Andrei Iarus <[email protected]> wrote: From: Andrei Iarus <[email protected]> Subject: Re: [fw-general] Menu in ZF: Controller Plugin with postDispatch method To: "Zend Framework" <[email protected]> Date: Monday, May 18, 2009, 1:52 PM Hello to everyone, I have got a problem (or a bug?) with the Zend_View component. I have this front controller plugin: class My_Controller_Plugin_Menu extends Zend_Controller_Plugin_Abstract { protected $_stack; public function dispatchLoopStartup( Zend_Controller_Request_Abstract $request ) { $modules = Zend_Controller_Front::getInstance()->getControllerDirectory(); $stack = $this->getStack(); foreach ($modules as $moduleName => $modulePath) { $leftMenuRequest = clone( $request ); $leftMenuRequest->setDispatched(false); $leftMenuRequest->setModuleName( $moduleName ) ->setControllerName('menu') ->setActionName('index'); $stack->pushStack($leftMenuRequest); } } /** Returns the stack using Zend_Controller_Plugin_ActionStack **/ public function getStack() {...} } With the application having two modules, the same view gets rendered two times (for each module) (and namely the view from the last module that is registered ). I mention that the actions can have no code, and the result is the same. What could be the problem? Thanks in advance, Andrei --- On Thu, 4/30/09, Andrei Iarus <[email protected]> wrote: From: Andrei Iarus <[email protected]> Subject: Re: [fw-general] Menu in ZF: Controller Plugin with postDispatch method To: "Zend Framework" <[email protected]> Date: Thursday, April 30, 2009, 8:09 PM Hello everyone, THe solution is to use the dispatchLoopStartup method in the Controller_Plugin_Menu, and there to use the Zend_Controller_Plugin_ActionStack plugin, as this plugin "operates as a postDispatch plugin"(from the manual). This means that all the variables set from the requested by the browser action, will be available to the menu controller. --- On Thu, 4/30/09, lightflowmark <[email protected]> wrote: From: lightflowmark <[email protected]> Subject: Re: [fw-general] Menu in ZF: Controller Plugin with postDispatch method To: [email protected] Date: Thursday, April 30, 2009, 4:12 PM The way I do something similar is to run code in dispatchLoopStartup like $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer'); $viewRenderer->init(); $view = $viewRenderer->view; $this->_view = $view; // set up common variables for the view $view->originalModule = $request->getModuleName(); $view->originalController = $request->getControllerName(); $view->originalAction = $request->getActionName(); I also set up my actionstack in dispatchLoopStartup. In my menuAction, I can then compare my menu items with $view->originalAction, etc. and colour them appropriately. Don't know if this is a good solution or not, but it is working for me. -- View this message in context: http://www.nabble.com/Menu-in-ZF%3A-Controller-Plugin-with-postDispatch-method-tp23306086p23315051.html Sent from the Zend Framework mailing list archive at Nabble.com.
