如何解决控制器的命名空间/前缀默认模块
| 在我的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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。