简体   繁体   中英

Zend Framework Autoloading in 3 modules

I am new to ZF and I am writing in Zend Framework 1.10 . Here is my application directory structure.

APPLICATION_PATH`
├─configs
 ├─layouts
 └─modules
    ├─admin
    │  ├─controllers
    │  ├─forms
    │  ├─models
    │  └─views
    │      ├─filters
    │      ├─helpers
    │      └─scripts
    │          ├─authentication
    │          ├─cars
    │          └─index
    └─default
        ├─controllers
        ├─forms
        │  └─admin
        ├─models
        │  └─DbTable
        ├─plugins
        └─views
            ├─helpers
            └─scripts
                ├─about
                ├─contact
                ├─error
                ├─index
                ├─insurance
                └─used-cars

I have 3 bootstrap.php files in APPLICATION_PATH, /default/ and /admin,

i used AutoLoader to load models and forms

// APPLICATION_PATH/Bootstrap.php
$modelLoader = new Zend_Application_Module_Autoloader(array(
'namespace' => '', 'basePath' => APPLICATION_PATH . '/modules/default'));

The code above will load all models and forms automatically in modules/default, and now, I have a problem to call forms and models in /modules/admin/models and /modules/admin/forms in default module.

Any solutions to solve this problem? How should I name the class name in /modules/admin

Thanks.

each of your modules should have a module bootstrap.

<?php
class Admin_Bootstrap extends Zend_Application_Module_Bootstrap
{
}

the module bootstrap sets up default autoloaders for that module.

UPDATE IN RESPONSE TO COMMENT:

make sure your ini is set up to Bootstrap modules

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.modules[] = ""

Then make sure each of your modules has a bootstrap class (see above).

尝试使用Zend Tool-它会为您创建所有必要的路径和文件,是开始使用Zend的好方法。

All you should need to do is add another module autoloader to load the Admin module:

$adminLoader = new Zend_Application_Module_Autoloader(array(
    'namespace' => 'Admin', 'basePath' => APPLICATION_PATH . '/modules/admin'));

add it after the original module auotloader. You can then reference things in the Default module by just creating them.

$form = new Admin_Form_TheForm();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM