En una de mis vistas tengo una tabla en la que muestro información de personas (Involucrados) y en la que puedo marcar varias filas mediente checkboxs. Además tengo un botón Generar para generar un documento (Citaciones) por cada persona seleccionada.
Este documento tiene algunos datos que se llenan a partir de un formulario (que no se corresponde a ninguna entidad).
Lo que pasa es que obtengo bien las personas seleccionadas, muestro bien el formulario para llenar los datos, pero cuando envío los datos del documento, pierdo el arreglo de personas que tenía.
A continuación pongo el código que estoy usando:
Aquí obtengo los involucrados seleccionados y hago un forward al Action que construye el formulario (fue lo mejor que se me ocurrió):
Código PHP:
public function generar_citacionesAction() {
$peticion = $this->getRequest();
if ($peticion->getMethod() == 'POST') {
$postData = $peticion->request->get('involucrados');
$em = $this->getDoctrine()->getEntityManager();
$id_oficial = $this->get('security.context')->getToken()->getUser()->getOficial()->getId();
$expediente = $em->getRepository('InvestigacionesPolicialesBundle:Expediente')->findOneBy(array('oficial' => $id_oficial, 'fundamentado' => 'false'));
$involucrados = $expediente->getDenuncia()->getInvolucrados();
$seleccionados = array();
foreach ($involucrados as $involucrado) {
$id = $involucrado->getId();
if ($postData[$id]) {
$seleccionados[] = $involucrado;
}
}
return $this->forward('InvestigacionesPolicialesBundle:Involucrado:llenar_citacion', array(
'seleccionados' => $seleccionados
));
}
return $this->redirect($this->generateUrl('investigaciones_policiales'));
}
Código PHP:
public function llenar_citacionAction($seleccionados) {
$peticion = $this->getRequest();
if ($peticion->getMethod() == 'POST') {
$defaultData = array('message' => 'Type your message here');
$formulario = $this->createFormBuilder($defaultData)
->add('lugar', 'textarea')
->add('fecha', 'date')
->add('hora', 'time')
->add('motivo', 'textarea')
->getForm();
$formulario->bind($peticion);
if ($formulario->isValid()) {
$data = $formulario->getData();
$lugar = $data['lugar'];
$fecha = $data['fecha'];
$hora = $data['hora'];
$motivo = $data['motivo'];
$investigador = $this->get('security.context')->getToken()->getUser()->getOficial();
return $this->render("InvestigacionesPolicialesBundle:Involucrado:listado_citaciones.html.twig", array(
'investigador' => $investigador,
'seleccionados' => $seleccionados,
'lugar' => $lugar,
'fecha' => $fecha,
'hora' => $hora,
'motivo' => $motivo
));
}
return $this->render("InvestigacionesPolicialesBundle:Involucrado:generar_citaciones.html.twig", array(
'formulario' => $formulario->createView(),
'seleccionados' => $seleccionados
));
}
return $this->redirect($this->generateUrl('investigaciones_policiales'));
}
{{ seleccionados | length }}
y me imprime 0.