Zend Framework - 具有模块前缀的类继承

时间:2014-02-21 14:17:19

标签: php zend-framework

我正在使用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

有谁知道如何解决这个问题?

1 个答案:

答案 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类。