0
votes

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.

3

3 Answers

3
votes

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

0
votes

Try using Zend Tool - it will create all necessary paths and files for you and is a good way to get started with Zend.

0
votes

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();