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

2 vistas en 1

Estas en el tema de 2 vistas en 1 en el foro de Zend en Foros del Web. Hola Tengo un esquema de 2 vistas (index(una grilla) y add(form)) que se muestran en la vista index, como puedo hacer para que la vista ...
  #1 (permalink)  
Antiguo 16/02/2011, 20:29
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 8 meses
Puntos: 2
Pregunta 2 vistas en 1

Hola

Tengo un esquema de 2 vistas (index(una grilla) y add(form)) que se muestran en la vista index, como puedo hacer para que la vista add se muestre pero pasando por el controller para tomar valores que son incrustados en dicha vista, ya que he intentado con $this->render(/controller/add.phtml) muestra la vista pero como no pasa por el controller no imprime ninguna variable declarada en este para ser mostrada por la vista, luego intente con $this->url imprimiendo en un iframe pero cuando guardo y hago el redirect a la vista index me muestra dos grillas en vez de una como deberia ser normalmente, no se porque pasa eso. Habra algun viewHelper o algo que permita hacer eso.-

Saludos
  #2 (permalink)  
Antiguo 16/02/2011, 21:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: 2 vistas en 1

usa un partial!!

cuando tratas de usar mas de un fragmento de código para la vista, sobre todo si son archivos independientes lo mejor es usar una vista parcial, y no debes pensar en que se trata de dos vistas: he ahí tu error...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 16/02/2011, 22:02
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: 2 vistas en 1

Bueno podrías declarar un layout y de ahí pasar los parametros. De esta forma es que indicas el layout
Código PHP:
Ver original
  1. $this->_helper->layout->setLayout('aqui_va_el_layout');
Pero para que eso funcione en el application.ini tienes que declarar de donde va a leer el layout
Código ini:
Ver original
  1. resources.layout.layoutPath = APPLICATION_PATH "/layouts"
  2. resources.layout.layout = "layout_que_va_a_ser_por_defecto"
Creas un directorio en el directorio de application llamado layouts. Ahí colocas las vistas principales y luego en el controlador, indicas las variables a usar. Acuerdate mencionar las variables en el layout.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 16/02/2011, 23:19
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: 2 vistas en 1

pateketrueke

Me intereso lo de usar partials pero como lo aplico a mi caso, que tengo que hacer, como te digo en la vista view index también muestro el formulario para agregar datos, el partial tendría que ser add.phtml como le paso a este los parámetros que se definen en el controller en la action add.
  #5 (permalink)  
Antiguo 16/02/2011, 23:38
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: 2 vistas en 1

Cita:
Iniciado por Fenris Ver Mensaje
pateketrueke

Me intereso lo de usar partials pero como lo aplico a mi caso, que tengo que hacer, como te digo en la vista view index también muestro el formulario para agregar datos, el partial tendría que ser add.phtml como le paso a este los parámetros que se definen en el controller en la action add.
en el contexto de la vista, o donde quieras incluir la vista parcial solamente debes pasar las variables que necesites...
Código PHP:
echo $this->partial('partial.phtml', array(
    
'from' => 'Team Framework',
    
'subject' => 'view partials')); 
consulta el manual!
http://framework.zend.com/manual/en/...w.helpers.html
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 17/02/2011, 02:41
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: 2 vistas en 1

Utilizar $this->render en un controller o $this->partial en una vista, es prácticamente lo mismo, en definitiva termina siendo $view->render, debería funcionarte, el tema es de donde salen los datos ?, del action que estas ejecutando o queres datos de otro action ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #7 (permalink)  
Antiguo 17/02/2011, 08:14
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: 2 vistas en 1

Hola

La accion que se ejecuta es index que obtiene los datos para cargar la grilla pero en la misma vista index se carga tambien un formulario para agregar datos y lo que necesito es que cargue los datos de la accion add pero en el form que se carga en la accion index.

Saludos
  #8 (permalink)  
Antiguo 17/02/2011, 08:36
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: 2 vistas en 1

Bueno tenes varias opciones:
  1. Utilizar el action helper ActionStack
  2. Utilizar el view helper action
  3. Crear un Custom View Helper
  4. Crear un Custom Action Helper

Si bien los primeros dos pueden ser tentadores, debes tener en cuenta el overhead(llaman al dispatch), y creo si no recuerdo mal que van a desaparecer en ZF 2.0, y entre un view helper y un action helper depende de si tenes que inspeccionar el request o modificar datos, en caso afirmativo action helper de lo contrario view helper.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #9 (permalink)  
Antiguo 17/02/2011, 08:58
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: 2 vistas en 1

Idem para lo que dices me suena a que tienes que solamente cargar el formulario, por lo que un Custom View Helper debería de ser lo único que necesitas para dibujar el formulario en tu vista.

Saludos.
  #10 (permalink)  
Antiguo 17/02/2011, 09:48
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: 2 vistas en 1

lo que pasa es que en el formulario (add) que se carga en el index view, cargo datos para rellenar un combobox, y otros attributos por eso necesito inspeccionar el request, seria mucha molestia si me pueden señalar un ejemplo de un custom action helper y un custom view helper para ver la diferencia.

Saludos
  #11 (permalink)  
Antiguo 17/02/2011, 10:08
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: 2 vistas en 1

Un action helper es como el Json, Redirector, FlashMessenger, etc. Los view Helpers son los que ejecutas directo en la vista como el Url Helper, etc.

Saludos.
  #12 (permalink)  
Antiguo 17/02/2011, 10:20
 
Fecha de Ingreso: agosto-2008
Mensajes: 271
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: 2 vistas en 1

Entonces tendria que crear una clase
ej. Helper_RenderAddInViewIndex extends Zend_Controller_Action_Helper_Abstract
Preguntas
1.- Donde guardo ese helper.
2.- Ese helper lo invoco en index view
3.- Si lo que quiero es pasar argumentos que estan en el add Action deberia poner esos argumentos en este HELPER.
4.- Que cambie en mi index view con este helper, ya no tendria que usar $this->url('path_to_add_view_action');
Eso es lo que tengo ahora en el index view
Código PHP:
Ver original
  1. <div class="formpage2col" style="margin:0 0px 0 0px; width:100%;">
  2.     <iframe name="iframeEvaluacionMensualAdd" id="iframeEvaluacionMensualAdd"
  3.         frameborder="0" marginheight="5"
  4.         marginwidth="5" title="Evaluacion Mensual"
  5.          scrolling="no" width="100%" height="400px"
  6.           src="<?php echo $this->url(array('controller' =>
  7.                                           'evaluacion-mensual',
  8.                                           'action' =>
  9.                                           'add'), null, true) ?>" ></iframe>
  10. </div>

Pero cuando guardo redirecciono al view index para mostrar los datos en la grilla y el form para que continue agregando, pero me muestra dos grillas cosa que no debería pasar.
  #13 (permalink)  
Antiguo 17/02/2011, 11:47
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: 2 vistas en 1

Te dejo un enlace que te explica como crear un Custom Action Helper, que curiosamente el tema se trata de cargar forms.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)

Etiquetas: vistas
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:56.