共享zend模块控制器以在另一个模块中使用

时间:2012-04-09 15:09:07

标签: php zend-framework

假设我有一个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

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

3 个答案:

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