Zend Framework仅加载默认模块控制器

时间:2011-03-30 17:10:30

标签: php zend-framework zend-framework-modules

我有两个模块,默认管理员。虽然ZF确实正确加载了管理布局,但它始终只加载默认模块控制器和默认模块视图。

控制器的路径在module.ini文件中为每个模块指定。我也尝试在application.ini中指定它,如下所示:

admin.resources.frontController.controllerDirectory = APPLICATION_PATH "/modules/admin/controllers"

没有任何影响。任何可能出现问题的想法?在开始使用模块之前,我真的很喜欢ZF ..

4 个答案:

答案 0 :(得分:7)

首先,您需要在application.ini

中声明此内容
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.defaultModule = "default"
resources.modules[] = ""

然后,将这段代码放在Bootstrap.php文件

public function _initAutoload()
{
    // Each module needs to be registered... 
    $modules = array(
        'Admin',
        'Default',
        'Support',
    );

    foreach ($modules as $module) {
        $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => ucfirst($module),
            'basePath'  => APPLICATION_PATH . '/modules/' . strtolower($module),
        ));
    }

    return $autoloader;
}

您的模块目录将如下所示

modules/
    |-- admin
    |   |-- controllers
    |   `-- views
    |-- default
    |   |-- controllers
    |   |-- forms
    |   |-- models
    |   `-- views
    `-- support
        |-- controllers
        |-- forms
        |-- models
        `-- views

这实质上将创建三个模块默认 admin 支持

顺便说一句......我想我们都在使用ZF中的模块。它只需要时间,然后一旦它工作,它就可以工作。祝你好运。

答案 1 :(得分:4)

您不必为每个模块提供控制器的路径。只需将以下指令添加到application.ini中:

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

答案 2 :(得分:1)

访问模块的资源,即表单,模型,插件等;您需要在模块的根目录中为模块添加Bootstrap类。看看下面的样本。只要有那个,就可以使用模块的资源。随意根据您的需求进行扩展。

<?php

class User_Bootstrap extends Zend_Application_Module_Bootstrap
{

}

答案 3 :(得分:0)

http://zendframework.com/manual/1.11/en/zend.application.available-resources.html

请参阅Zend_Application_Resource_Frontcontroller部分。