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

Ayuda con Zend Framework

Estas en el tema de Ayuda con Zend Framework en el foro de Zend en Foros del Web. Tengo que hacer una serie de formularios en varias acciones de un mismo controlador. Hay una parte donde se piden datos de personas por lo ...
  #1 (permalink)  
Antiguo 14/05/2009, 20:50
 
Fecha de Ingreso: mayo-2009
Mensajes: 12
Antigüedad: 15 años
Puntos: 0
Ayuda con Zend Framework

Tengo que hacer una serie de formularios en varias acciones de un mismo controlador. Hay una parte donde se piden datos de personas por lo que necesito crear un formulario para ingresar nombre y apellidos, sin embargo, estas personas no se refieren a lo mismo ni tiene por qué ser la misma cantidad.

Por ejemplo, en algun action necesito generar esto:
Código HTML:
<form>
<fieldset>
 .... parte particular de este formulario
</fieldset>
<fieldset>
    <legend>Otros Datos</legend>
    <fielset>
        <legend>Datos del padre</legend>
         Nombre: <input type="text" name="padre[nombre]" value="" />
         Apellido Paterno: <input type="text" name="padre[apepat]" value="" />
         Apellido Materno: <input type="text" name="padre[apemat]" value="" />
    </fielset>
    <fielset>
        <legend>Datos de la Madre</legend>
         Nombre: <input type="text" name="madre[nombre]" value="" />
         Apellido Paterno: <input type="text" name="madre[apepat]" value="" />
         Apellido Materno: <input type="text" name="madre[apemat]" value="" />
    </fielset>
</fieldset>
</form> 
En otro formulario puede pedir los mismos campos de nombres y apellidos pero referidos a otras personas (solicitantes, titulares, referidos ...) y en diferente cantidad. Pensé en crear un view script con solo esta parte del fomulario para posteriormente incluirla en su lugar y candidad dependiendo del action.

Mi primer intento es tener en el view script asociado a mi action algo así:

Código PHP:
<form>
<fieldset>
 .... parte particular de este formulario
</fieldset>
<fieldset>
    <legend>Otros Datos</legend>
     <?php echo $this->otrosDatos?>
</fieldset>
</form>
Para en el controlador hacer algo como:
Código PHP:
public function formularioAction()
{
    
$this->view->legend 'Datos del Padre';
    
$this->view->name 'padre';
    
// 'plantilla' sería el formulario que quiero re-ocupar, con la idea de pasarle el
    // legend y algo para nombrar los campos y no se encimen
    
$this->otrosDatos $this->render('plantilla');
    
// Y esperaria 'otrosDatos' tenga el HTML de un formulario para repetir la 
    // la acción cuantas veces sea necesario.

   
$this->view->legend 'Datos de la Madre';
    
$this->view->name 'madre';
    
$this->otrosDatos .= $this->render('plantilla');

    return 
$this->render('formulario');

El problema que tengo con esto es que no sé como hacer que el método render regrese la salida para asignarla a otra variable para el otro viewscript. Igual no sé si sea lo más correcto.

Otra podría ser hacerlo en el view script directamente, algo como esto:
Código PHP:
  <fieldset>
    <legend>Otros Datos</legend>
    <?php
    $this
->legend 'Datos del Padre';
        
$this->name 'padre';
    echo 
$this->render('controlador/plantilla.phtml');

        
$this->legend 'Datos de la Madre';
        
$this->name 'madre';
    echo 
$this->render('controlador/plantilla.phtml');
    
?>
  </fieldset>
... que parece esto sí podría funcionar, pero no creo sea lo mejor meter esto en la vista. ¿Qué opinan? ... ¿alguien se ha enfrentado con esto?
  #2 (permalink)  
Antiguo 14/05/2009, 21:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Ayuda con Zend Framework

Puedes usar del método render, el named segment, para inyectarlo al final de tu script, revisa esto: http://framework.zend.com/manual/en/...iewintegration

Saludos.
  #3 (permalink)  
Antiguo 15/05/2009, 15:10
 
Fecha de Ingreso: mayo-2009
Mensajes: 12
Antigüedad: 15 años
Puntos: 0
Respuesta: Ayuda con Zend Framework

Hola, gracias por el enlace. Lo he leído y, por el texto, parece sí es lo que necesito: generar un segmento para ser llamado e insertado posteriormente en el lugar en el que necesite ... sin embargo, no he alcanzado a comprender cómo utilizarlo.

Básicamente, entiendo (lo he experimentado) puedo tener mis segmentos en un array, pero ¿cómo indico dónde van esos segmentos en mi vista? ...

Agradecería un ejemplo práctico, porque si bien sí es lo que busco, esto me generó más preguntas que respuestas. Ojalá y seaposible.
  #4 (permalink)  
Antiguo 16/05/2009, 10:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Ayuda con Zend Framework

Pues son parte directo del response object, creo y leyendo más lo que tu quieres, es mejor hacerlo de la segunda forma ya que así los tienes como parte de tu viewScript y no al final, ya que al final no te sirven de mucho si no pudes ponerlos donde tu gustas.

Saludos.
  #5 (permalink)  
Antiguo 18/05/2009, 19:00
 
Fecha de Ingreso: mayo-2009
Mensajes: 12
Antigüedad: 15 años
Puntos: 0
Respuesta: Ayuda con Zend Framework

¿Te refieres a la segunda forma que mencioné?, definir parámetros en la vista e imprimirlos ahí.

No me gusta lo de la definición de variables ahí, como que no es parte de la vista, pero por otra parte no interfiere con nada más como toma de desiciones o algo similiar ...

Pues lo haré así, aunque igual me quedo con la duda estos "named segment", ojalá alguien pudiera aportar un ejemplo de su uso.

Gracias, voy a crear otro tema...
  #6 (permalink)  
Antiguo 18/05/2009, 20:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Ayuda con Zend Framework

El named response es cuando usas un response diferente, si estas usando Zend_Layout en la respuesta puedes imprimir los responses, pero acuerdate que Zend_Layout es para los templates mas genericos, que sistema de impresion estas usando?

Saludos.
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 14:27.