默认模块中控制器的命名空间/前缀

tex*_*xai 4 zend-framework zend-framework-modules

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

  • 申请人
  • 公司
  • 管理

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

resources.frontController.defaultModule = "applicant"
Run Code Online (Sandbox Code Playgroud)

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

class IndexController extends Zend_Controller_Action /* in Applicant Module */
class Company_IndexController extends Zend_Controller_Action
class Admin_IndexController extends Zend_Controller_Action
Run Code Online (Sandbox Code Playgroud)

由于申请人是我的默认模块,因此我不需要在课程名称中使用模块名称作为前缀.

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

我想使用这些类名

class Applicant_IndexController extends Zend_Controller_Action
class Company_IndexController extends Zend_Controller_Action
class Admin_IndexController extends Zend_Controller_Action
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误:

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
Run Code Online (Sandbox Code Playgroud)

Dav*_*aub 5

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

在基于模块的应用程序中,我个人发现使用模块名称为所有控制器添加前缀更加一致.这是一个问题,并通过添加前端控制器设置显然在版本1.5中修复prefixDefaultModule.

所以,application/configs/application.ini你可以添加:

resources.frontController.prefixDefaultModule = true

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