在我的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
答案 0 :(得分:5)
如您所知,默认模块中的控制器名称不需要前缀(例如:SomeController
),而非默认模块中的控制器需要前缀(例如:Admin_SomeController
)。
在基于模块的应用程序中,我个人认为使用模块名称为所有控制器添加前缀更加一致。这是以an issue提交的,并通过添加前端控制器设置prefixDefaultModule
在apparently in version 1.5中修复。
因此,在application/configs/application.ini
中,您可以添加:
resources.frontController.prefixDefaultModule = true
我一直使用它并认为它很棒。 ; - )
答案 1 :(得分:2)
请参阅ZF文档:The Dispatcher
从1.5.0开始,你现在可以这样做了 将prefixDefaultModule指定为 在前控制器或 你的调度员:
您可以在application.ini中设置它...
resources.frontController.prefixDefaultModule = true
..或来自其他任何地方:
Zend_Controller_Front::getInstance()->setParam('prefixDefaultModule', true);