2

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

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

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

没有任何效果。问题可能出在哪里?在开始使用模块之前,我真的很喜欢 ZF。

4

4 回答 4

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

这实质上将创建三个模块defaultadminsupport

顺便说一句....我认为我们都在 ZF 的模块上苦苦挣扎。它只需要时间,然后一旦它起作用,它就会起作用。祝你好运。

于 2011-03-30T20:39:09.453 回答
4

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

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.defaultModule = "default"
resources.modules[] = 
于 2011-03-30T19:32:21.567 回答
1

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

<?php

class User_Bootstrap extends Zend_Application_Module_Bootstrap
{

}
于 2011-08-04T11:23:20.060 回答
0

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

请参阅 Zend_Application_Resource_Frontcontroller 部分。

于 2011-03-30T17:28:37.193 回答