在插件中调用动作助手

时间:2011-02-08 07:33:22

标签: php zend-framework

在我的控制器/动作中,我可以调用动作助手

$this->_helper->getHelper('layout')->disableLayout();

我想在插件中做同样的事情,所以我尝试了这个,但它不起作用。插件如何访问动作助手?

$controller = $this->getRequest()->getControllerName();
$controller->getHelper('layout')->disableLayout();

1 个答案:

答案 0 :(得分:8)

方法getControllerName返回控制器的名称,而不是对象。在前端控制器插件中,您无权访问控制器对象。

如果您想在插件中访问操作助手,则应使用Zend_Controller_Action_HelperBroker及其getStaticHelper()方法:

  

还有两种静态方法可以从帮助程序代理检索帮助程序:getExistingHelper()和getStaticHelper()。 getExistingHelper()只有在先前已由助手代理调用或显式注册时才会检索助手;如果没有,它会抛出异常。 getStaticHelper()与getExistingHelper()的作用相同,但如果尚未使用帮助程序堆栈注册,则会尝试实例化帮助程序。 getStaticHelper()是检索您希望配置的帮助程序的不错选择。

所以你的代码应该是这样的:

$layout = Zend_Controller_Action_HelperBroker::getStaticHelper('Layout');
$layout->disableLayout();