【问题标题】:calling action helper in a plugin在插件中调用动作助手
【发布时间】:2011-02-08 07:33:21
【问题描述】:

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

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

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

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

【问题讨论】:

标签: php zend-framework


【解决方案1】:

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

如果你想在插件中访问动作助手,你应该使用Zend_Controller_Action_HelperBroker 和它的getStaticHelper() 方法:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多