Carlos Robles frikiblog

Acceder a un View Helper desde el Action Controller

| 0 comments

Los View Helpers son una especie de plugins que proporciona funcionalidad que podemos usar cuando estamos creando una vista en Zend Framework 2. Se explica con detalle aquí

Estaremos acostumbrados a usar unos cuantos, como por ejemplo docType, headLink, o los distintos Form View Helpers.

Por lo general se usan en la vista y solo en la vista, pero hay ocasiones en las que tenemos que introducir demasiada lógica, y preferimos sacar algunas operaciones al controlador. Por suerte desde el controlador ya podemos acceder a los view helpers que utilizará la vista.

He buscado un montón por internet, y como no es algo muy habitual, nno hay demasiada información. Despues de muchas pruebas, encuentro que la forma de hacerlo es:


public function indexAction()
 {
 $sm = $this->getEvent()->getApplication()->getServiceManager();
 $helper = $sm->get('viewhelpermanager')->get('NOMBRE_DEL_HELPER');

...

por ejemplo, si queremos acceder al view helper FormLabel, para por ejemplo cambiar el text domain del translator que se encarga de traducir las etiquetas de los formularios que se rendericen, el código seria asi:


public function indexAction()
{
$sm = $this->getEvent()->getApplication()->getServiceManager();
$helper = $sm->get('viewhelpermanager')->get('FormLabel');
$helper->setTranslatorTextDomain('MI_TEXT_DOMAIN');

...

Si esto es una buena forma de trabajar, se escapa del alcance de este post. Yo personalmente siempre soy partidario de sacar absolutamente toda la lógica fuera de la vista.

Facebook Twitter Linkedin Plusone Digg Delicious Reddit Email

Leave a Reply

Required fields are marked *.