1

假设我有一个 User_RegistrationController ,我想在另一个模块中扩展,如下所示:

class Clinic_RegisterController extends User_RegisterController

但我有 PHP 错误:

( ! ) Fatal error: Class 'User_RegisterController' not found /application/modules/clinic/controllers/RegisterController.php on line 4

有没有办法从另一个模块扩展控制器?

4

3 回答 3

3

您可以将基本控制器拉入一个单独的库类:

class App_Controller_Action_MyController extends Zend_Controller_Action
{
    // your base controller code here
}

那么模块中的控制器foo可能为空:

class Foo_MyController extends App_Controller_Action_MyController
{
}

而模块中的控制器bar可以包含您的覆盖:

class Bar_MyController extends App_Controller_Action_MyController
{
     // override your members/methods
}

不要忘记添加App_autoloadernamespace.

于 2012-04-09T16:05:56.727 回答
1

自动加载器只是没有设置为从其他模块中查找控制器。

如果你想做你正在做的事情,你可以简单地require_once在你的类定义上方添加一个语句:

require_once APPLICATION_PATH . '/modules/user/controllers/RegisterController.php';

class Clinic_RegisterController extends User_RegisterController
{
    //...
}
于 2012-04-09T23:35:32.890 回答
0

为什么需要扩展另一个模块的控制器?这会创建对另一个模块的依赖。如果两个控制器中有共同的代码,则在应用层使用动作助手

于 2012-04-10T05:08:25.163 回答