2009-07-12 5 views
21

J'écris un assistant d'action et j'ai besoin d'appeler un autre assistant d'action depuis l'assistant. mais je ne sais pas comment. ici dans l'exemple de code:zend-framework, appelez un assistant d'action depuis un autre assistant d'action

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 
    } 
} 

Répondre

36

Utilisez le action helper broker:

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

il a très bien fonctionné. :) –

0

Vous pouvez également utiliser getActionController pour obtenir une référence à la ActionController que vous utilisiez pour toutes les méthodes que vous utilisez normalement là.

-1

Vous pouvez l'appeler ainsi:

$this->_actionController->OtherActionHelper(); 

La propriété _actionController fait référence au contrôleur d'action réelle.

+3

En essayant d'utiliser cette réponse, j'ai une propriété 'Undefined' sur mon contrôleur. La réponse acceptée a cependant fonctionné pour moi. – ANisus

11

Une autre solution est:

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

Cette méthode fonctionne mieux car 'getStaticHelper', alors' getActionController' dans l'assistant retourne 'null' –

0

En plus de la réponse de mercator, ajoutez votre méthode après, voir exemple ci-dessous:

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