我正在使用PHP和Zend Framework实现一些代码并使用模块。
我在application.ini
中设置了以下行:
resources.frontController.prefixDefaultModule = "true"
因此admin
模块中的控制器类名称为Admin_{class name}
现在,我正在尝试使用像
这样的继承class Admin_IndexController extends Admin_BaseController
但我总是得到同样的错误信息:
Warning: include_once(BaseController.php): failed to open stream: No such file or directory in C:\xampp\php\pear\Zend\Loader.php on line 146
Warning: include_once(): Failed opening 'BaseController.php' for inclusion (include_path='.;\xampp\php\PEAR;..\library;..\library\Carrinho;..\application;..\application\models;..\application\modules;..\application\plugins') in C:\xampp\php\pear\Zend\Loader.php on line 146
Fatal error: Class 'BaseController' not found in C:\xampp\htdocs\SiteSermap\application\modules\admin\controllers\IndexController.php on line 3
Obs。:我已经尝试过使用它(没有“Admin”前缀)
class Admin_IndexController extends BaseController
有谁知道如何解决这个问题?
答案 0 :(得分:0)
使用自动加载程序模块时,文件名称告诉Zend文件在文件树中的位置。在您的情况下,您必须将文件放在Admin目录中。像这样:
modules/admin/BaseController.php => Admin_BaseController.php
modules/somemodule/submodule/SomeController.php => Somemodule_Submodule_SomeController.php
您的基类是否在正确的文件夹中?
注意:Admin_IndexController不需要Admin_前缀,除非它被包含在其他地方(这是一个不好的做法)。这就是为什么Zend确实找到你的IndexController类而不是你的BaseController类。