2009-07-12 111 views
21

我正在寫一個動作助手,我需要從該助手中調用另一個動作助手。但我不知道如何。在這裏的示例代碼: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 
    } 
} 

回答

36

使用action helper broker

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

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

0

您還可以使用getActionController得到一個參考回到你使用你通常會使用有什麼方法ActionController的。

-1

你可以把它用這種方式:

$this->_actionController->OtherActionHelper(); 

_actionController屬性引用的實際動作控制器。

+3

當試圖使用這個答案時,我的控制器上有一個未定義的屬性。但接受的答案對我來說確實有效。 – ANisus 2011-09-06 13:40:26

11

另一種解決方案是:

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

該方法實際上效果更好,因爲使用`getStaticHelper`,那麼助手中的`getActionController`返回`null` – 2014-09-25 20:41:22

0

除了墨卡託的答案,之後添加你的方法,見下面的例子:

Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger')->myMethod(); 
相關問題