Ver Mensaje Individual
  #13 (permalink)  
Antiguo 16/11/2015, 13:21
barrera1997
 
Fecha de Ingreso: octubre-2015
Mensajes: 11
Antigüedad: 8 años, 6 meses
Puntos: 0
Respuesta: Consulta en MongoDB tras generar un formulario con entity

Una cosita más. Siento ser tan pesado, pero soy muy nuevo en Symfony.

Después de mostrar por pantalla la respuesta de una consulta a base de datos, quiero exportar la respuesta dada a un formato determinado (csv, excel, json, ...). ¿Cómo puedo añadir en la plantilla twig que genera la respuesta a la consulta a base de datos una llamada a una Actions que exporte los datos con los parámetros de la búsqueda en base de datos?

Mi aplicación consiste en generar un formulario donde el usuario introducirá valores en distintos campos. Si el formulario es válido, se ejecutará una búsqueda contra MongoDB de acuerdo filtrando por los valores introducidos en el formulario. El siguiente paso es redendizar para presentar los datos que ha devuelto la búsqueda contra MongoDB. En esa redendización, tengo un botón para exportar a un fichero en formato CSV/Excel/JSON los datos devueltos por la búsqueda contra MongoDB. Es en este paso donde no sé cómo pasar al Action de Exportación los datos devueltos por la búsqueda contra MongoDB.

En el Controlador DefaultController.php codifico:
class DefaultController extends Controller {
//.....
public function searchSumarioBOEAction (Request $request)
{
//Inicio de searchSumarioBOEAction
//....
$sumarioBOE=new boe1();
$form = $this->createForm(new searchSumarioBOEType(), $sumarioBOE, array ('method' => 'GET',));
$form->handleRequest($request);
//......
if ($form->isValid()) {
$datos= //Ejecutar Query contra MongoDB
return $this->render('jbdMEBIBD2015FEBBundle:Default:resultado. html.twig', array('datos' => $datos));
}
//...
//Fin de searchSumarioBOEAction
}

public function generateCsvAction($datos)
{
//Código para exportar a CSV los $datos obtenidos tras Ejecutar Query contra MongoDB
//....
//....
}
}

La plantilla twig resultado.html.twig es:

{% block body %}
<a href="{{ path('generateCsv', {'datos': datos}) }}">Export as Excel</a>
{# table body #}
{% for dato in datos %}
{% if dato.item is not null%}
<table>
<tr>
<td><h2><a href="http://www.boe.es{{dato.urlPdf}}">{{ dato.item }}</a></h2></td>
</tr>
<tr>
<td>Fecha: {{dato.fechaPub }}</td>
</tr>
<tr>
<td>Departamento: {{dato.departamento }}</td>
</tr>
<tr>
<td>Sección: {{dato.NombreSeccion }}</td>
</tr>
<tr>
<td>Epígrafe: {{dato.epigrafe }}</td>
</tr>
<tr>
<td>Título: {{ dato.titulo }}</td>
</tr>
</table>
{% endif %}
{% else %}
<table>
<tr>
<td>No hay resultados.</td>
</tr>
</table>
{% endfor %}
{% endblock %}

El fichero routing.yml es el siguiente:

searchBOE:
path: /searchSumarioBOE
defaults: { _controller: jbdMEBIBD2015FEBBundle:Default:searchSumarioBOE }
generateCsv:
pattern: /generateCsv
defaults: {_controller: jbdMEBIBD2015FEBBundle:Default:generateCsv }

Muchas gracias.

Un saludo.