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

问题描述

| 在我的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
    

解决方法

        请注意,默认模块中的控制器名称不需要前缀(例如:
SomeController
),而非默认模块中的控制器则需要加上前缀(例如:
Admin_SomeController
)。 在基于模块的应用程序中,我个人发现为所有控制器添加模块名称前缀更加一致。这是一个问题,显然是在1.5版中通过添加前端控制器设置“ 6”来解决的。 因此,在
application/configs/application.ini
中,您可以添加:
resources.frontController.prefixDefaultModule = true
我一直使用它,并认为它很棒。 ;-)     ,        请参阅ZF文档:分派器   从1.5.0版开始,您现在可以通过   将prefixDefaultModule指定为   在前置控制器或   您的调度员: 您可以在application.ini中设置它...
resources.frontController.prefixDefaultModule = true
..或其他任何地方:
Zend_Controller_Front::getInstance()->setParam(\'prefixDefaultModule\',true);