2009-07-12 10 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

それがとてもうまくいきました。 :) –

0

あなたはまた戻って、あなたが正常にそこに使用したい任意の方法のために使用していたactioncontrollerへの参照を取得するためにgetActionControllerを使用することができます。

-1

あなたはこの方法でそれを呼び出すことができます。

$this->_actionController->OtherActionHelper(); 

_actionControllerプロパティは、実際のアクションコントローラを参照します。

+3

この回答を使用しようとすると、私のコントローラに「未定義のプロパティ」があります。しかし、受け入れられた答えは私のために働いた。 – ANisus

11

別の解決策は、次のとおりです。メルカトルの答えに加えて

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

このメソッドは実際にはうまく機能します。なぜなら、 'getStaticHelper'ではヘルパーの' getActionController'が 'null'を返します –

0

、以下の例を参照してください、あなたの後にメソッドを追加:

Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger')->myMethod(); 
関連する問題