我有两个模块,默认和管理员。虽然ZF确实正确加载了管理布局,但它始终只加载默认模块控制器和默认模块视图。
控制器的路径在module.ini文件中为每个模块指定。我也尝试在application.ini中指定它,如下所示:
admin.resources.frontController.controllerDirectory = APPLICATION_PATH "/modules/admin/controllers"
没有任何影响。任何可能出现问题的想法?在开始使用模块之前,我真的很喜欢ZF ..
答案 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部分。