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?