Crear nuestros Action Helpers
Los Action Helpers son clases que se extienden de Zend_Controller_Action_Helper_Abstract y siguiendo la convención de nombres, la ubicación física de los action que vienen por defecto es LIBRERÍA/ZEND/CONTROLLER/ACTION/HELPER, ahora bien, para adicionar código personalizado o propio se sugiere hacerlo bajo la carpeta LIBRARY, nuestros Action Helpers los podemos guardar en LIBRARY/COD/HELPERS
COD = Carpeta de Código Propio (El nombre es indiferente por ejemplo: MY o LIB)
Cómo llamar un Action Helper
La clase que esta encargada de administrar los Action Helpers es Zend_Controller_Action_HelperBroker , mediante sus métodos getHelper, addHelper, addPath, addPrefix, resetHelpers, podrá obtener un helper por nombre, adicionar helper, adicionar la ruta de ubicación, adicionar helpers por prefijo y hacer un reset al stack respectivamente. Esta clase permite cargar por demanda cualquier Action Helper, esto debido a que se comporta como una fábrica de helper registrados de forma estática.
Esta clase es requerida por Zend_Controller_Action y una de sus propiedades es:
protected $_helper = null;
La cual guarda una instancia de su clase
public function __construct(Zend_Controller_Request_Abstract $request, Zend_Controller_Response_Abstract $response, array $invokeArgs = array())
{
$this->setRequest($request)
->setResponse($response)
->_setInvokeArgs($invokeArgs);
$this->_helper = new Zend_Controller_Action_HelperBroker($this);
$this->init();
}
Para llamar a un Action Helper dentro de un Controller debemos utilizar el helperbroker así:
$this->_helper->nombreActionHelper();
Cómo registrarlos y ejecutarlos
Utilizando addPrefix() la clase prefijo sirve para determinar la ruta donde están ubicados los Action Helpers, este prefijo debe regirse por la convenciones de nombre de clases utilizadas por ZF.
Para ser ejecutados dentro de los "Action" de los controladores se debe primero indicar donde se encuentran físicamente para esto inicializaremos en el Bootstrap un metodo _init o adicionamos una nueva linea en application.ini
class Cod_Helpers_Ayudas extends Zend_Controller_Action_Helper_Abstract {
public function direct( )
{
}
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initHelper()
{
Zend_Controller_Action_HelperBroker::addPrefix('Cod_Helpers');
}
}
Una alternativa para el bootstrap es inicializar en el application.ini
[production]
resources.frontController.actionHelperPaths.HELPER_Prefix ="My/Helper/Path"
Podemos también llamar a otros Action Helper ubicados físicamente en otra ruta, para hacer estos utilizamos:
Zend_Controller_Action_HelperBroker::addPath(APPLICATION_PATH .'/controllers/helpers');