假设我有一个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
有没有办法从另一个模块扩展控制器?
答案 0 :(得分: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
。
答案 1 :(得分:1)
自动装带器未设置为从其他模块中查找控制器。
如果您想要做您正在做的事情,您只需在类定义上方添加require_once
语句:
require_once APPLICATION_PATH . '/modules/user/controllers/RegisterController.php';
class Clinic_RegisterController extends User_RegisterController
{
//...
}
答案 2 :(得分:0)
为什么需要扩展另一个模块的控制器?这会创建对另一个模块的依赖。如果两个控制器中都有公共代码,请在应用程序层中使用action helpers。