zend-framework,从另一个动作助手中调用一个动作助手

zend-framework,从另一个动作助手中调用一个动作助手

问题描述:

我正在写一个动作助手,我需要从该助手中调用另一个动作助手。但我不知道如何。在这里的示例代码:zend-framework,从另一个动作助手中调用一个动作助手

class Common_Controller_Action_Helper_SAMPLE extends Zend_Controller_Action_Helper_Abstract 
{ 
    protected $_view; 
    public function __construct(Zend_View_Interface $view = null, array $options = array()) 
    { 
     $this->_view = $view; 
    } 

    public function preDispatch() 
    { 
     $flashMessenger = $this->_helper->FlashMessenger; // IT IS NULL 
    } 
} 

使用action helper broker

$flashMessenger = 
    Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger'); 
+0

它的工作很大。 :) – 2009-07-12 20:32:34

您还可以使用getActionController得到一个参考回到你使用你通常会使用有什么方法ActionController的。

你可以把它用这种方式:

$this->_actionController->OtherActionHelper(); 

_actionController属性引用的实际动作控制器。

+3

当试图使用这个答案时,我的控制器上有一个未定义的属性。但接受的答案对我来说确实有效。 – ANisus 2011-09-06 13:40:26

另一种解决方案是:

$flashMessenger = $this->getActionController()->getHelper('FlashMessenger'); 
+0

该方法实际上效果更好,因为使用`getStaticHelper`,那么助手中的`getActionController`返回`null` – 2014-09-25 20:41:22

除了墨卡托的答案,之后添加你的方法,见下面的例子:

Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger')->myMethod();