jbl*_*lue 0 php zend-framework
在我的控制器/动作中,我可以调用动作助手
$this->_helper->getHelper('layout')->disableLayout();
Run Code Online (Sandbox Code Playgroud)
我想在插件中做同样的事情,所以我尝试了这个,但它不起作用.插件如何访问动作助手?
$controller = $this->getRequest()->getControllerName();
$controller->getHelper('layout')->disableLayout();
Run Code Online (Sandbox Code Playgroud)
方法getControllerName返回控制器的名称,而不是对象.在前端控制器插件中,您无权访问控制器对象.
如果你想在插件中访问动作助手,你应该使用Zend_Controller_Action_HelperBroker它的getStaticHelper()方法:
还有两种静态方法可以从助手代理中检索助手:getExistingHelper()和getStaticHelper().getExistingHelper()只有在先前已由助手代理调用或显式注册时才会检索助手; 如果没有,它会抛出异常.getStaticHelper()与getExistingHelper()的作用相同,但如果尚未使用帮助程序堆栈注册,则会尝试实例化帮助程序.getStaticHelper()是检索您希望配置的帮助程序的不错选择.
所以你的代码应该是这样的:
$layout = Zend_Controller_Action_HelperBroker::getStaticHelper('Layout');
$layout->disableLayout();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1216 次 |
| 最近记录: |