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

Zend View no toma datos desde el controller, solo la view.

Estas en el tema de Zend View no toma datos desde el controller, solo la view. en el foro de Zend en Foros del Web. Hola a todos. Estoy queriendo obtener el código resultante de una view. Para ello utilizo : $miView = new Zend_View(); $miView->setBasePath(APPLICATION_PATH . '/modules/productos/views/'); $codigoHtml=$miView->render('controllertodos/ver.phtml'); Lo ...
  #1 (permalink)  
Antiguo 06/01/2011, 11:13
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 15 años, 5 meses
Puntos: 2
Zend View no toma datos desde el controller, solo la view.

Hola a todos.

Estoy queriendo obtener el código resultante de una view.
Para ello utilizo :

$miView = new Zend_View();
$miView->setBasePath(APPLICATION_PATH . '/modules/productos/views/');
$codigoHtml=$miView->render('controllertodos/ver.phtml');

Lo que hace esto es dar una salida de la view 'ver.phtml' y dejarla en $codigoHtml.

El problema es que dentro del controller 'controllertodos' tengo variables para la vista, que Zend_View() ignora. Es decir, por lo que veo, Zend_View() renderiza directamente la view sin pasar previamente por su controller correspondiente.
Con lo que las variables jamás son cargadas.

¿Alguién sabe como puedo resolver esto?

gracias !!! :)
  #2 (permalink)  
Antiguo 06/01/2011, 11:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Zend View no toma datos desde el controller, solo la view.

Pues eso es natural, Zend_View es un componente para renderizar vistas, si quieres tu ejecutar como tal todo un controller y regresar el resultado puedes usar el Action view helper, aunque no es recomendado por que tiene que levantar todo el sistema MVC.

Lo mejor y más limpio para lo que deseas hacer es crear ya sea un Action Helper o un View Helper para renderizar tus datos.

Saludos.
  #3 (permalink)  
Antiguo 06/01/2011, 11:30
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: Zend View no toma datos desde el controller, solo la view.

gracias como Siempre GatorV; y por la pronta respuesta. Ahora me pongo a investigar sobre eso.

saludos!
  #4 (permalink)  
Antiguo 07/01/2011, 12:28
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: Zend View no toma datos desde el controller, solo la view.

Gator, continuando con el tema. Lo que quiero hacer creo que no se adapta justo a tus sugerencias. Es decir, amplio lo que quiero:

en un proceso (que lo he puesto dentro de un view helper), recibo un array con distintos controllers y actions de los cuales quiero obtener sus salidas renderizadas.
¿Hay algo en Zend que pueda ayudarme?


saludos!
  #5 (permalink)  
Antiguo 07/01/2011, 12:37
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: Zend View no toma datos desde el controller, solo la view.

Talves si mostras algo de codigo es mas fácil de ver la idea, tal cual lo estas expresando deberias hacer lo que te comenta y advierte GatorV
  #6 (permalink)  
Antiguo 07/01/2011, 12:46
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: Zend View no toma datos desde el controller, solo la view.

En realidad, se trata de un proceso (en un view helper) que recibe un array con 3 datos: que modulo, que controller, que action, debe ejecutarse y obtener la salida rendereada.

Como es un viewhelper, el Controller actual puede ser cualquiera. Por lo que ví, los Action Helpers, da la opción de realizar operaciones extras, pero con el Controller del momento, no puede referirse a otro . ¿o si?

este es el view helper:

public function renderCualquiera( $modulo, $controller, $action )
{

$miView = new Zend_View();
$miView->setBasePath(APPLICATION_PATH . '/modules/'.$modulo.'/views/');
$codigoHtml=$miView->render($controller.'/'.$action.'.phtml');

return $codigoHtml;

}
  #7 (permalink)  
Antiguo 07/01/2011, 13:19
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: Zend View no toma datos desde el controller, solo la view.

Una cosa es un Action Helper y otra el View Helper Action, si bien te va a servir deberías tener el cuenta el overhead.

Saludos.
  #8 (permalink)  
Antiguo 07/01/2011, 13:35
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: Zend View no toma datos desde el controller, solo la view.

si, gracias masterpuppet. Creo que es el componente Zend que buscaba.

Tienes idea de ¿cuánto podría ser el retraso al realizar llamadas a este componente? no creo que pase de algunos milisengudos si el servidor es bueno.

Última edición por maue75; 07/01/2011 a las 13:51
  #9 (permalink)  
Antiguo 07/01/2011, 14:06
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: Zend View no toma datos desde el controller, solo la view.

En realidad el View Helper Action como el Action Helper ActionStack al principio pueden ser tentadores, pero yo buscaría otra solución, seguro que con algo de refactoring conseguís lo mismo, te dejo un enlace de alguien que algo sabe del tema :).
En cuanto a tu pregunta, deberias tener en cuenta lo que implica llamar a action, en el primer párrafo te lo explica y seguro mejor que yo, igualmente las veces que lo he utilizado ni me enterado del overhead.

Saludos.
  #10 (permalink)  
Antiguo 07/01/2011, 14:34
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: Zend View no toma datos desde el controller, solo la view.

gracias masterpuppet !! me ha servido tu ayuda.

Etiquetas: render, zend_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 05:38.