2009年4月8日星期三

Re: [fw-mvc] Autoloading module resources with 1.8 Preview

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 :)

>
>
>> I am using:
>>
>>     protected function _initDefaultModuleAutoloader()
>>     {
>>         $this->_logger->info('Bootstrap ' . __METHOD__);
>>
>>         $this->_resourceLoader = new Zend_Application_Module_Autoloader(array(
>>             'namespace' => 'Storefront',
>>             'basePath'  => APPLICATION_PATH . '/modules/storefront',
>>         ));
>>         $this->_resourceLoader->addResourceTypes(array(
>>             'modelResource' => array(
>>               'path'      => 'models/resources',
>>               'namespace' => 'Resource',
>>             ),
>>             'service' => array(
>>               'path'      => 'services',
>>               'namespace' => 'Service',
>>             ),
>>         ));
>>     }
>>
>> and then you can use the modules resource for all other modules.
>>
>> Full code is here http://code.google.com/p/zendframeworkstorefront/,
>> though I only use one module at the moment I have tested with multiple
>> modules
>>
>> hope this helps
>>
>> 2009/4/8 Cristian Bichis <contact@zftutorials.com>:
>> > Thanks, I guess will work (still got one error, below)
>> >
>> > What settings for frontController resource are recommended for a modular
>> > structure ? In testing projects i used:
>> >
>> > resources.frontcontroller.moduledirectory = MODULE_PATH
>> > resources.frontcontroller.defaultmodule = "default"
>> >
>> > Now, since 1.8 Previe I am getting a new error:
>> >
>> > Fatal error: Uncaught exception 'Zend_Controller_Exception' with message 'No
>> > default module defined for this application'
>> >
>> > I tried couple of combinations for  settings, even those from
>> > http://framework.zend.com/manual/en/zend.application.available-resources.html
>> >
>> > But still no luck...
>> >
>> > --
>> > Best regards,
>> > Cristian Bichis
>> > www.zftutorials.com | www.zfforums.com | www.zftalk.com | www.zflinks.com
>> >
>> > -- Cristian Bichis <contact@zftutorials.com> wrote
>> > (on Wednesday, 08 April 2009, 10:36 PM +0300):
>> >
>> >
>> > Ok, so it's not possible to auto-load modules resources without making a
>> > bootstrap for each of modules ?
>> >
>> >
>> > You can, but you have to do it yourself by creating a resource method or
>> > plugin. As an example:
>> >
>> >
>> >     class Bootstrap extends Zend_Application_Bootstrap_Base
>> >     {
>> >         protected $_modules = array(
>> >             'Blog' => APPLICATION_PATH . '/modules/blog',
>> >             'News' => APPLICATION_PATH . '/modules/news',
>> >         );
>> >
>> >         protected function _initModuleAutoloaders()
>> >         {
>> >             foreach ($this->_modules as $namespace => $path) {
>> >                 $loader = new Zend_Application_Module_Autoloader(array(
>> >                     'namespace' => $namespace,
>> >                     'basePath'  => $path,
>> >                 ));
>> >             }
>> >         }
>> >
>> >         // ...
>> >     }
>> >
>> > That will create the autoloader for the modules you list; instantiation
>> > registers with the main autoloader instance implicitly.
>> >
>> >
>> >
>> > Two things:
>> >
>> >  * First, extend Zend_Application_Module_Bootstrap in your module
>> >    bootstraps. Part of instantiation includes registering a module
>> >    autoloader for that module.
>> >
>> >  * Second, use the Modules resource plugin with your application
>> >    bootstrap. This will search through your module directories for
>> >    bootstraps and initialize them if found.
>> >
>> > I'll be getting a full example up soon to make this more clear.
>> >
>> >
>> >
>> >
>> >
>>
>>
>>
>> --
>> ----------------------------------------------------------------------
>> [MuTe]
>> ----------------------------------------------------------------------
>>
>
> --
> Matthew Weier O'Phinney
> Software Architect      | matthew@zend.com
> Zend Framework          | http://framework.zend.com/
>
>

--
----------------------------------------------------------------------
[MuTe]
----------------------------------------------------------------------

没有评论: