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

Symfony2: Pasar Valores/Parámetros entre Actions en un mismo controlador

Estas en el tema de Symfony2: Pasar Valores/Parámetros entre Actions en un mismo controlador en el foro de Symfony en Foros del Web. Buenas tardes: Estoy realizando mi proyecto fin de máster utilizando Symfony2 como framework. En un controlador, tengo un Action que crea un formulario. Si el ...
  #1 (permalink)  
Antiguo 27/10/2015, 12:58
 
Fecha de Ingreso: octubre-2015
Mensajes: 11
Antigüedad: 9 años
Puntos: 0
Symfony2: Pasar Valores/Parámetros entre Actions en un mismo controlador

Buenas tardes:

Estoy realizando mi proyecto fin de máster utilizando Symfony2 como framework. En un controlador, tengo un Action que crea un formulario. Si el formulario es correcto, llamo a una función que busca en base de datos y devuelve los datos. Quiero que esos datos recibidos sean procesados por otro Action dentro del mismo Controlador. ¿Es posible? ¿Cómo puedo enviar los datos entre Acciones de un mismo Controlador?

Muchas gracias.

Un saludo.
  #2 (permalink)  
Antiguo 27/10/2015, 15:14
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: Symfony2: Pasar Valores/Parámetros entre Actions en un mismo controlador

Cual es la razón de hacer eso ? puede publicar los dos métodos de tu controlador y que es lo que quieres hacer
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 29/10/2015, 09:16
 
Fecha de Ingreso: octubre-2015
Mensajes: 11
Antigüedad: 9 años
Puntos: 0
Respuesta: Symfony2: Pasar Valores/Parámetros entre Actions en un mismo controlador

Buenas tardes:

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. Necesitaría exportar y paginar el resultado de la query 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 }

¿Cómo puedo pasar un parámetro entre 2 Actions de un mismo controlador en Symfony? Es decir, ¿cómo puedo pasar el valor $datos entre el Action searchSumarioBOEAction y el Action generateCsvAction? El Action generateCsvAction se ejecutará cuando el usuario pulse sobre el botón de Exportar a Excel después de la redendización de searchSumarioBOEAction. Necesitaría exportar y paginar el resultado de la query contra MongoDB.

Por otra parte, ¿me recomiendas algún bundle para realizar la exportación de los datos (exportar a csv, excel, json, ....)?

Muchas gracias.

Un saludo.

Etiquetas: form, symfony2
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 07:01.