> -- Cristian Bichis <contact@zftutorials.com> wrote
> (on Thursday, 09 April 2009, 12:41 PM +0300):
>> I am just trying to see the advantage of such design (basically moving
>> application bootstrap and configs under default module). At least now it does
>> seems to be just an unnecessary complication.
>>
>> The fact that other modules are using same configs it rather makes the
>> Bootstrap to be on global level rather than on a "global level into default
>> module".
>
> One idea we have tossed around is that modules would be responsible for
> loading their own configuration. The question is whether we should
> automate that, or whether it's the responsibility of the developer when
> they write their module bootstrap.
>
> Thoughts?
I dont quite understand what you mean, however I will say that when
first using the modules resource, I assumed that it would work like:
bootstrap <- Main Bootstrap
modules
default
bootstrap
m1
bootstrap
So you would have global resources, front controller etc in main
bootstrap and then module specific in the others, I think Cristian
made the same assumption.
Do you mean to have say separate config files for each module?
>
>
>> Not too sure if this is what Matthew meant yet :) I am just
>> experimenting with different ways at the moment, also I dont really
>> see the problem with moving the bootstrap file, after all this is the
>> default module, and you could assume that this module deals with the
>> majority of the settings. Plus I dont have to manually configure the
>> default autoloader now, I only need to add to them.
>>
>> Also the app will never work without a default module.
>>
>> With what you were trying before, I would double check your paths,
>> also if you need to see whats registered etc get the autoloader using:
>>
>> $loader = Zend_Loader_Autoloader::getInstance();
>> var_dump($loader);
>>
>> This will should you the entire autoloader config :)
>>
>> Thx
>>
>> Keith
>>
>>
>>
>> --
>> Best regards,
>> Cristian Bichis
>> www.zftutorials.com | www.zfforums.com | www.zftalk.com | www.zflinks.com
>>
>> I have just updated my code after Matthews earlier comments. So now I have:
>>
>> modules
>> storefront
>> Bootstrap.php <- Main bootstrap subclasses
>> Zend_Application_Module_Bootstrap
>>
>> and a config like:
>>
>> bootstrap.path = APPLICATION_PATH"/modules/storefront/Bootstrap.php"
>> bootstrap.class = "Storefront_Bootstrap"
>>
>> storefront.resources.frontcontroller.moduledirectory =
>> APPLICATION_PATH"/modules"
>> storefront.resources.frontcontroller.defaultmodule = "storefront"
>> storefront.resources.frontcontroller.throwexceptions = false
>> storefront.resources.frontcontroller.params.prefixDefaultModule = true
>> storefront.resources.frontcontroller.plugins.action = "SF_Plugin_Action"
>> storefront.resources.frontcontroller.plugins.admin =
>> "SF_Plugin_AdminContext"
>>
>> By doing it this way Zend_Application will auto register the
>> autoloaders for you :)
>>
>> code is here http://code.google.com/p/zendframeworkstorefront/
>>
>> Matthew, is this what you meant?
>>
>> Thx
>>
>> Keith
>>
>>
>> 2009/4/9 Cristian Bichis <contact@zftutorials.com>:
>>
>>
>> See my answer below...
>>
>> keith Pope wrote:
>>
>> 2009/4/9 Matthew Weier O'Phinney <matthew@zend.com>:
>>
>>
>> -- keith Pope <mute.pop3@googlemail.com> wrote
>> (on Wednesday, 08 April 2009, 10:17 PM +0100):
>>
>>
>> The module resource skips the default module, you need to set that one
>> up yourself, I think :)
>>
>>
>> Your default module should be the one whose bootstrap you are attaching
>> to Zend_Application typically.
>>
>>
>> Indeed that makes more sense :) I look forward to your example
>> hopefully I have got it mostly correct :)
>>
>>
>> MyAutoloader is:
>>
>> //set Autoloader
>> protected function _initAutoloader()
>> {
>> $this->_logger->info('Bootstrap ' . __METHOD__);
>>
>> $this->bootstrap('frontcontroller');
>> $this->bootstrap('logging');
>>
>> $this->_modules = array('admin' => MODULE_PATH . '/admin', 'default'
>> => MODULE_PATH . '/default');
>>
>> foreach ($this->_modules as $namespace => $path) {
>> $loader = new Zend_Application_Module_Autoloader(array(
>> 'namespace' => $namespace,
>> 'basePath' => $path,
>> ));
>> }
>>
>> return $this;
>> }
>> But i still got that error...
>>
>> Fatal error: Class 'Admin_Model_Acl' not found in
>> D:\_Work\yda\application\Bootstrap.php on line 163
>>
>> If i change this line
>>
>> $this->_modules = array('Admin' => MODULE_PATH . '/admin', 'Default'
>> => MODULE_PATH . '/default');
>>
>> I got this...
>>
>> Fatal error: Uncaught exception 'Zend_Controller_Exception' with message 'No
>> default module defined for this application'
>>
>> Confusing...
>>
>> --
>> Best regards,
>> Cristian Bichis
>> www.zftutorials.com | www.zfforums.com | www.zftalk.com | www.zflinks.com
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>
> --
> Matthew Weier O'Phinney
> Software Architect | matthew@zend.com
> Zend Framework | http://framework.zend.com/
>
>
--
----------------------------------------------------------------------
[MuTe]
----------------------------------------------------------------------
没有评论:
发表评论