2009-07-12 13 views
21

sto scrivendo un helper di azione e ho bisogno di chiamare un altro helper di azione dall'interno di quell'assistente. ma non so come. qui nel codice di esempio:zend-framework, chiama un helper di azione da un altro helper di azione

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

risposta

36

Utilizzare il action helper broker:

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

ha funzionato grande. :) –

0

È anche possibile utilizzare getActionController per ottenere un riferimento di nuovo alla ActionController che si stava utilizzando per tutti i metodi normalmente usereste lì.

-1

Si può chiamare in questo modo:

$this->_actionController->OtherActionHelper(); 

La proprietà _actionController fa riferimento al controller di azione reale.

+3

Quando si tenta di utilizzare questa risposta, ho ottenuto una 'Proprietà indefinita' sul mio controller. La risposta accettata ha funzionato comunque per me. – ANisus

11

Un'altra soluzione è:

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

Questo metodo funziona davvero meglio perché con 'getStaticHelper', quindi' getActionController' nell'helper restituisce 'null' –

0

Oltre alla risposta di Mercator, aggiungere il metodo dopo, vedi esempio qui sotto:

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