2009/5/7 Justin Barnes <[email protected]>: > Hi Vadim, > > Not sure if this answers your question - but this is my solution to > bootstrapping and encapsulating modules. I would be happy to hear others > feedback. > > I'm using the following module bootstrap class to bootstrap my modules ... I > have plans to extend the Module_Bootstrap class to do this automatically > (similar to how is does autoloading), but in the mean time I have this. > > class Module1_Bootstrap extends Zend_Application_Module_Bootstrap > { > protected function _initModuleConfig() > { > $moduleConfig = new Zend_Config_Ini(APPLICATION_PATH . '/modules/' . > $moduleName . '/configs/module.ini', APPLICATION_ENV); > Zend_Registry::set($moduleName, $moduleConfig); > } > } > > This is the directory structure of my application. All module configs are > placed in module/configs/module.ini and loaded via the module bootstrap. > This allows me to "black box" my modules. I really wish the default module > acted the same way so I could also encapsulate it's config. But since it > doesn't all default configs end up in application.ini > > /application > /configs > /application.ini > /modules > /default > /controllers > /models > /views > /services > /module1 > /configs > /module.ini > /controllers > /models > /services > /views > /bootstrap.php > /module2 > /configs > /module.ini > /controllers > /models > /views > /bootstrap.php > > > A thanks to Keith Pope ... Your example store front code got me moving in > the right direction a few weeks back.
Glad its of some use :) This is pretty much what me and Matthew were discussing a few weeks back, were every module will be responsible for its own config. I would expect Z_App to move in this direction in the future. Obviously I dont speak for the project so Matthew may be better to confirm this :) > > > > On Thu, May 7, 2009 at 3:20 AM, Vadim Gabriel <[email protected]> wrote: >> >> Hey, >> >> Thanks for that, It's a good start. The reason i want to separate the >> admin from the other modules is because i will have lots of controllers for >> each module, Each module will have several layouts, each one has to load >> different public resources from the public folder so it's important for me >> to make a complex modeler structure so switching layouts, views, resources, >> controllers separation and adding more modules at a later time will be >> easier. >> >> Since there are no resources about it, You need to dig trough the PHP >> files of the ZF to figure out how the ZF works with modules step-by-step >> that sometimes takes time (too much time). >> >> I am still looking to get this done the way i showed above, If your book >> will cover that area as well then you got yourself your first buyer and >> reader. >> >> Thanks. >> >> >> On Thu, May 7, 2009 at 11:00 AM, keith Pope <[email protected]> >> wrote: >>> >>> 2009/5/7 Vadim Gabriel <[email protected]>: >>> > OK i have added a bootsrap.php file for each module in the module root >>> > directory. For some reason it won't load that bootstrap file. >>> > For example my default module directory is as follows: >>> > >>> > -default >>> > --bootsrap.php >>> > --controllers >>> > --layouts >>> > --views >>> > >>> > my bootsrap.php file has the class Default_Bootstrap extends >>> > Zend_Application_Module_Bootstrap >>> > >>> > and it consists of an _initView method which never gets called. but it >>> > routes to the index controller of the default module. Meaning it works >>> > just >>> > with nothing set, not view, no layout no nothing. >>> >>> Currently the default module is skipped, look inside the modules >>> resource to see. Therefore Zend_App assume that the main bootstrap >>> file is your default bootstrap file. This will change at some point, I >>> had a conversation with Matthew about it some time ago and there are >>> various ideas about configuring individual modules. >>> >>> I have an example of bootstrapping with modules here: >>> http://code.google.com/p/zendframeworkstorefront I should be updating >>> it in the next few weeks to include multiple modules as currently it >>> has only one. Also I use a route to create the "admin" section rather >>> than a separate module, this way you can keep all your module code >>> together in one place. >>> >>> Hope that makes sense :) >>> >>> > >>> > Any idea why? >>> > Thanks. >>> > >>> > On Wed, May 6, 2009 at 6:24 PM, Vadim Gabriel <[email protected]> >>> > wrote: >>> >> >>> >> P.S I do not use the Zend_Tool yet since it doesn't support >>> >> modules...Yet >>> >> (as far as i know) >>> >> >>> >> On Wed, May 6, 2009 at 6:23 PM, Vadim Gabriel <[email protected]> >>> >> wrote: >>> >>> >>> >>> Thanks everyone, I think since there are so many people wondering >>> >>> about >>> >>> it, A blog post/tutorial will be a good idea *hint Matthew hint* i >>> >>> will take >>> >>> a look at those once i am at the office tomorrow. >>> >>> >>> >>> Vince. >>> >>> >>> >>> On Wed, May 6, 2009 at 5:33 PM, Jurian Sluiman >>> >>> <[email protected]> wrote: >>> >>>> >>> >>>> I think (but am not sure about it) you can add view helper paths in >>> >>>> the >>> >>>> module bootstrap. You need to specify them for each module, that's >>> >>>> correct. >>> >>>> But it's not much work to have an init method in each bootstrap >>> >>>> class adding >>> >>>> a path to the view (only some duplicated code...). >>> >>>> >>> >>>> -- >>> >>>> Jurian Sluiman >>> >>>> Soflomo.com >>> >>>> >>> >>>> Op Wednesday 06 May 2009 16:27:31 schreef Karl: >>> >>>> > Hi, >>> >>>> > >>> >>>> > I've been trying to configure the same setup as mentioned and was >>> >>>> > having >>> >>>> > issues trying to get my view helpers registered in the modules. >>> >>>> > You >>> >>>> > will >>> >>>> > have to register your view helper paths in each modules bootstrap >>> >>>> > file. >>> >>>> > >>> >>>> > regards, >>> >>>> > Karl >>> >>>> > >>> >>>> > _____ >>> >>>> > >>> >>>> > From: Jurian Sluiman [mailto:[email protected]] >>> >>>> > Sent: 06 May 2009 04:03 PM >>> >>>> > To: [email protected] >>> >>>> > Subject: Re: [fw-general] Bootstrapping modules >>> >>>> > >>> >>>> > Op Wednesday 06 May 2009 14:57:00 schreef Vadim Gabriel: >>> >>>> > > Hey, >>> >>>> > > >>> >>>> > > Are there any tutorials/guides out there that show examples on >>> >>>> > > ways >>> >>>> > > to >>> >>>> > > bootstrap an application using more then one module? I mean if i >>> >>>> > > have a >>> >>>> > > directory structure like this: >>> >>>> > > >>> >>>> > > -library >>> >>>> > > ---Zend >>> >>>> > > -public >>> >>>> > > ---admin >>> >>>> > > -----default >>> >>>> > > -----other >>> >>>> > > ---site >>> >>>> > > -----default >>> >>>> > > -----other >>> >>>> > > ---index.php >>> >>>> > > -application >>> >>>> > > ---configs >>> >>>> > > -----application.ini >>> >>>> > > ---modules >>> >>>> > > -----admin >>> >>>> > > -------controllers >>> >>>> > > -------layouts >>> >>>> > > ---------scripts >>> >>>> > > -----------default >>> >>>> > > -----------other >>> >>>> > > -------views >>> >>>> > > ---------scripts >>> >>>> > > -----------default >>> >>>> > > -----------other >>> >>>> > > ---------helpers >>> >>>> > > -----site >>> >>>> > > -------controllers >>> >>>> > > -------layouts >>> >>>> > > ---------scripts >>> >>>> > > -----------default >>> >>>> > > -----------other >>> >>>> > > -------views >>> >>>> > > ---------scripts >>> >>>> > > -----------default >>> >>>> > > -----------other >>> >>>> > > ---------helpers >>> >>>> > > >>> >>>> > > Basically i am looking for creating a modeler structure >>> >>>> > > application >>> >>>> > > using >>> >>>> > > ZF 1.8, Is there anything blogged about it? >>> >>>> > > >>> >>>> > > Thanks. >>> >>>> > >>> >>>> > Hi Vadim, >>> >>>> > I have looked into this problem as well. It isn't mentioned in the >>> >>>> > manual, >>> >>>> > but it's very simple. You should add a Bootstrap.php in each >>> >>>> > module >>> >>>> > root >>> >>>> > containing the class {ModuleName}_Bootstrap, e.g. Admin_Bootstrap, >>> >>>> > and >>> >>>> > extending it from Zend_Application_Module_Bootstrap. >>> >>>> > Now make sure you initialise the modules resource in the global >>> >>>> > bootstrap >>> >>>> > class by adding this to your application.ini (if you pass a >>> >>>> > Zend_Config >>> >>>> > object when creating the Zend_Application instance): >>> >>>> > resources.modules[] = >>> >>>> > >>> >>>> > >>> >>>> > >>> >>>> > >>> >>>> > >>> >>>> > Now you should have a proper modular design with autoloading the >>> >>>> > modules >>> >>>> > using the conventional structure. >>> >>>> > >>> >>>> > >>> >>>> > >>> >>>> > >>> >>>> > >>> >>>> > Regards, Jurian >>> >>> >>> >>> >>> >>> -- >>> >>> Vincent Gabriel. >>> >>> Lead Developer, Senior Support. >>> >>> Zend Certified Engineer. >>> >>> Zend Framework Certified Engineer. >>> >>> -- http://www.vadimg.co.il/ >>> >>> >>> >>> >>> >>> >>> >> >>> >> >>> >> >>> >> -- >>> >> Vincent Gabriel. >>> >> Lead Developer, Senior Support. >>> >> Zend Certified Engineer. >>> >> Zend Framework Certified Engineer. >>> >> -- http://www.vadimg.co.il/ >>> >> >>> >> >>> >> >>> > >>> > >>> > >>> > -- >>> > Vincent Gabriel. >>> > Lead Developer, Senior Support. >>> > Zend Certified Engineer. >>> > Zend Framework Certified Engineer. >>> > -- http://www.vadimg.co.il/ >>> > >>> > >>> > >>> > >>> >>> >>> >>> -- >>> ---------------------------------------------------------------------- >>> [MuTe] >>> ---------------------------------------------------------------------- >> >> >> >> -- >> Vincent Gabriel. >> Lead Developer, Senior Support. >> Zend Certified Engineer. >> Zend Framework Certified Engineer. >> -- http://www.vadimg.co.il/ >> >> >> > > -- ---------------------------------------------------------------------- [MuTe] ----------------------------------------------------------------------
