What you basically need is to defer the setting of layout until routeShutdown. This can be done with a controller plugin. Matthew's suggestion [ http://framework.zend.com/issues/browse/ZF-6568?focusedCommentId=30741#action_30741] is to have your module bootstrap register a plugin which implements routeShutdown() or dispatchLoopStartup(). The plugin method checks the current module, then do stuff if it matches with the calling bootstrap module.
Personally, I don't like this method because it could lead to lots of unused plugins. I prefer to have only one plugin that pulls the current module from the request, pulls its bootstrap from the modules resource and executes a specific method. class Mz_Plugin_ModuleLazyInit extends Zend_Controller_Plugin_Abstract { protected $_bootstraps; public function __construct($bootstraps) { $this->_bootstraps = $bootstraps; } public function routeShutdown(Zend_Controller_Request_Abstract $request) { $module = $request->getModuleName(); if (isset($this->_bootstraps[$module])) { $bootstrap = $this->_bootstraps[$module]; if (method_exists($bootstrap, 'lazyInit')) { $bootstrap->lazyInit(); } } } } // application bootstrap protected function _initPlugins() { if ($this->hasPluginResource('modules')) { $this->bootstrap('modules'); $this->bootstrap('frontController'); $bootstraps = $this->getResource('modules'); $front = $this->getResource('frontController'); $plugin = new Mz_Plugin_ModuleLazyInit($bootstraps); $front->registerPlugin($plugin); } } // module bootstrap public function lazyInit() { $appBootstrap = $this->getApplication(); $appBootstrap->bootstrap('layout'); $layout = $appBootstrap->getResource('layout'); $layout->setLayoutPath(dirname(__FILE__) . '/layouts'); } -- Mon On Fri, May 8, 2009 at 8:25 AM, Karl <k...@wedgeonline.co.za> wrote: > I still have the same problem and have not been able to get different > layouts to work when using modules. Can this actually be achieved or are we > all trying something that has not been implemented ? > > Regards, > Karl > > ------------------------------ > *From:* Sergio Rinaudo [mailto:kaiohken1...@hotmail.com] > *Sent:* 07 May 2009 10:50 PM > *To:* matt...@zend.com; fw-general@lists.zend.com > *Subject:* RE: [fw-general] ZF1.8 Switching layouts between modules. > > Hi matthew, > I added the line you said, and the layout is switched, but unfortunatelly > for all modules, so also the default module is rendered with the admin > layout. Any advice? > > Sergio Rinaudo > > > > > > Date: Thu, 7 May 2009 16:18:44 -0400 > > From: matt...@zend.com > > To: fw-general@lists.zend.com > > Subject: Re: [fw-general] ZF1.8 Switching layouts between modules. > > > > -- Sergio Rinaudo <kaiohken1...@hotmail.com> wrote > > (on Thursday, 07 May 2009, 08:54 PM +0200): > > > I've almost completed to implement all my past work in the new > > > Zend_Application, I still have the problem on how switch layouts > between > > > modules. I noticed here you can specify this in the configuration ini > file: > > > > > > > http://framework.zend.com/manual/en/zend.application.available-resources.html# > > > zend.application.available-resources.modules.configExample > > > > > > but if I add this line on my ini > > > > > > admin.resources.layout.layout = "admin" > > > > > > I get the error > > > > > > Fatal error: Uncaught exception 'Zend_Application_Bootstrap_Exception' > with > > > message 'Resource matching "frontcontroller" not found' in > > > > I know what's happening here. > > > > The layout resource has this: > > > > $this->getBootstrap()->bootstrap('FrontController'); > > > > The problem is that your _module_ bootstrap doesn't have the resources > > that the _application_ bootstrap had -- and so it's finding no matching > > resource to bootstrap. > > > > One workaround is to add this to your configuration: > > > > admin.resources.frontController[] = > > > > This will grab and return the front controller singleton, which should > > work for these purposes. > > > > -- > > Matthew Weier O'Phinney > > Project Lead | matt...@zend.com > > Zend Framework | http://framework.zend.com/ > > ------------------------------ > Cerchi i tuoi spazi? Hotmail va oltre i 5GB. Scopri > perché!<http://messenger.it/hotmail.aspx> >