4

在我的 zf 应用程序中,我有 3 个模块:

  • 申请人
  • 公司
  • 行政

而且,在我的 application.ini 中,我选择了一个默认模块

resources.frontController.defaultModule = "applicant"

因此,一些控制器类的名称如下:

class IndexController extends Zend_Controller_Action /* in Applicant Module */
class Company_IndexController extends Zend_Controller_Action
class Admin_IndexController extends Zend_Controller_Action

由于申请人是我的默认模块,我不需要在类名中使用模块名称作为前缀。

如何使用前缀方式在默认模块中命名类?

我想使用这些类名

class Applicant_IndexController extends Zend_Controller_Action
class Company_IndexController extends Zend_Controller_Action
class Admin_IndexController extends Zend_Controller_Action

但我收到此错误:

Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)' in ZendFramework-1.11.6/library/Zend/Controller/Dispatcher/Standard.php on line 248
4

2 回答 2

5

正如您所注意到的,默认模块中的控制器名称不需要前缀(例如:)SomeController,而非默认模块中的控制器需要前缀(例如:)Admin_SomeController

在基于模块的应用程序中,我个人觉得在所有控制器前面加上模块名称更一致。这已作为问题提交,并通过添加前端控制器设置在 1.5 版中明显修复prefixDefaultModule

因此,在 中application/configs/application.ini,您可以添加:

resources.frontController.prefixDefaultModule = true

我一直在使用它,并认为它很棒。;-)

于 2011-06-16T08:32:27.233 回答
2

请参阅 ZF 文档:调度程序

从 1.5.0 开始,您现在可以通过在前端控制器或调度程序中将 prefixDefaultModule 指定为 TRUE 来做到这一点:

您可以在 application.ini 中设置它...

resources.frontController.prefixDefaultModule = true

..或从其他任何地方:

Zend_Controller_Front::getInstance()->setParam('prefixDefaultModule', true);
于 2011-06-16T07:40:44.450 回答