Foros del Web » Programando para Internet » PHP » Zend »

¿cómo acceder a un View Helper desde Zend_Db_Table ?

Estas en el tema de ¿cómo acceder a un View Helper desde Zend_Db_Table ? en el foro de Zend en Foros del Web. Hola foro! ¿Cómo puedo acceder al objeto view desde una clase que extiende de Zend_Db_Table, con la idea de poder tomar así los view helpers ...
  #1 (permalink)  
Antiguo 16/06/2012, 11:57
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 15 años, 5 meses
Puntos: 2
¿cómo acceder a un View Helper desde Zend_Db_Table ?

Hola foro!

¿Cómo puedo acceder al objeto view desde una clase que extiende de Zend_Db_Table, con la idea de poder tomar así los view helpers ?

Quisiera poder acceder a la view tal como puedo hacerlo desde el Controller.

Dentro del modelo que extiende a Zend_Db_Table hice esto pero no me ha funcionado:

$view = Zend_Registry::get('view');
$html = $view->miHelper();

el mensaje de error fue:
Fatal error: Uncaught exception 'Zend_Loader_PluginLoader_Exception' with message 'Plugin by name 'DataMinimaPerro' was not found in the registry;...

alguna idea?
thanks !

Mauricio
  #2 (permalink)  
Antiguo 16/06/2012, 12:11
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: ¿cómo acceder a un View Helper desde Zend_Db_Table ?

Acceder a un view helper desde un modelo no es muy correcto que digamos, porque quieres hacer algo así ?, y el problema que tienes es que al view que estas accediendo no tiene registrado el view helper que intentas utilizar, estas seguro que registraste el view helper ?, en caso afirmativo, estas seguro que estas accediendo al view correcto ?


Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #3 (permalink)  
Antiguo 16/06/2012, 13:10
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: ¿cómo acceder a un View Helper desde Zend_Db_Table ?

Gracias por responder masterpuppet. :)
Si, se que no es lo habitual querer acceder al view desde un modelo, pero he optado por una estructura donde algunos mensajes se podrían armar usando helpers desde el propio modelo luego de ejecutar acciones sobre el modelo, liberando al controller de esa tarea.
Sobre tu siguiente pregunta, de que no está registrado el helper en el view que estoy accediendo...pues... no tengo idea. Pense que solo había 1 view declarado como objeto de toda la corrida. Y que simplemente tenía que ver como acceder a él.
¿registrar el helper?¿cómo es eso? Los helpers solo los creo en una carpeta que siempre los toma sin problemas, habiendo declarado en el bootstrap asi:

protected function _initView()
{
$view = new Zend_View();
$view->addHelperPath( APPLICATION_PATH.'/views/helpers', 'Application_View_Helper'); // Specify view helper and its path
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelp er( 'ViewRenderer' );
$viewRenderer->setView($view);
Zend_Registry::set('view', $view);
return $view;
}
  #4 (permalink)  
Antiguo 16/06/2012, 15:50
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: ¿cómo acceder a un View Helper desde Zend_Db_Table ?

Si bueno registrar no es mas que indicar el path :P, estas seguro que en la carpeta views/helpers tienes el fichero DataMinimaPerro con como mínimo el siguiente contenido ?

Código PHP:
Ver original
  1. class Application_View_Helper_DataMinimaPerro
  2. {
  3.    public function dataMinimaPerro()
  4.    {}
  5. }

te comento que el path lo puedes agregar en el application.ini con algo asi:

Código INI:
Ver original
  1. resources.view.helperPath.Application_View_Helper = APPLICATION_PATH "/views/helpers"

y es preferible hacer un bootstrap del resource que crear un nuevo view, si tienes el resource.view declarado en el application.ini puedes hacer algo así:

Código PHP:
Ver original
  1. protected function _initViewResource()
  2. {
  3.     $this->bootstrap('view');
  4.     $view = $this->getResource('view');  
  5.     $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
  6.     $viewRenderer->setView($view);
  7.     Zend_Registry::set('view', $view);
  8.     return $view;    
  9. }

y en caso de que no tengas el resource.view registrado en el application.ini algo así:

Código PHP:
Ver original
  1. protected function _initViewResource()
  2. {
  3.     $this->bootstrap('layout');
  4.     $layout = $this->getResource('layout');    
  5.     $view = $layout->getView();
  6.     $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
  7.     $viewRenderer->setView($view);
  8.     Zend_Registry::set('view', $view);
  9.     return $view;    
  10. }

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #5 (permalink)  
Antiguo 16/06/2012, 16:43
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: ¿cómo acceder a un View Helper desde Zend_Db_Table ?

Masterpuppet, muchas gracias !! por tu tiempo y la claridad en tu respuesta.

Me obligasté a revisar el código, y si.. me había quedado algo mal en el código. disculpas!

Con el tema respecto de la view. Pues claro!! me parece mucho mejor lo que tu dices, respecto de tomar el recurso view existente y no generar uno nuevo. Asi que he seguido tus pasos y he modificado mi código para evitar ese mal camino, tomando el último código de tu explicación.
Muchas gracias otra vez!!

Etiquetas: view
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:31.