2009-07-12 13 views
21

Escribo un action helper y necesito llamar a otro action helper desde ese helper. pero no sé cómo. aquí en el código de ejemplo:zend-framework, llama a un ayudante de acción desde otro action helper

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

Respuesta

36

Utilice la action helper broker:

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

funcionó muy bien. :) –

0

También puede utilizar getActionController para obtener una referencia de nuevo a la ActionController que estaba utilizando algún método que normalmente utiliza allí.

-1

Se le puede llamar de esta manera:

$this->_actionController->OtherActionHelper(); 

La propiedad _actionController hace referencia al controlador de acción real.

+3

Al intentar usar esta respuesta, obtuve una 'propiedad no definida' en mi controlador. La respuesta aceptada sin embargo funcionó para mí. – ANisus

11

Otra solución es:

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

Este método en realidad funciona mejor porque con 'getStaticHelper', entonces' getActionController' en el helper devuelve 'null' –

0

Además de la respuesta de Mercator, añade su método después, véase el siguiente ejemplo:

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