Peticiones Ajax con Symfony 3
Peticiones Ajax con Symfony 3

En este tutorial vamos a ver el trabajo con rutas en Symfony, como todo framework, Symfony también tiene un sistema de rutas y en particular el sistema de rutas que utiliza Symfony es tremendamente potente.

Todo el sistema de rutas lo podemos manejar a través de anotaciones de forma muy sencilla, podemos utilizar expresiones regulares, el paso de parámetros, añadir requerimientos que una ruta deba cumplir para ser procesada, valores por defecto, definir el Content-type que debe retornar a través del parámetro especial _format.

En versiones anteriores de Symfony el parámetro _format se utilizaba como parte de la query string pero en la versión 3 ha cambiado por motivos técnicos.

El trabajo con rutas en Symfony

Primero vamos a crear un sencillo controlador como el siguiente.


Ahí tenemos todo lo que vamos a necesitar, Controller, Route y Response, el primero y el último son realmente opcionales para este ejemplo.

Lo primero que vamos a definir es una sencilla ruta para la acción index.


De esta forma tan sencilla le estamos diciendo a Symfony que cuando la ruta /article/list sea encontrada se ejecute el método indexAction, así de sencillo.

Si quieres definir la vista asociada a esa acción simplemente crea el archivo index.html.twig en el directorio src/AppBundle/Resources/views/Article con el siguiente contenido.

Rutas con parámetros en Symfony

El paso de parámetros es muy sencillo, vamos a añadir el siguiente método al controlador Article.


Este método obedecerá a la ruta /article/show/y cualquier parámetro, ya que hemos pasado el parámetro a la vista, vamos a crear el archivo.

Rutas con extensión en Symfony

Gracias al parámetro _format podemos definir una extensión para nuestras rutas y a través de la extensión también quedará definido el content-type de la respuesta, aquí un ejemplo.


Las siguientes rutas estarán disponibles para esté método.

  • http://127.0.0.1:8000/article/new-article.html
  • http://127.0.0.1:8000/article/new-article.php
  • http://127.0.0.1:8000/article/new-article.json

Y el Content-type de cada respuesta será el que cada extensión ofrezca, por ejemplo, la extensión .json devolverá el Content-Type:application/json.

También podemos ver que por defecto la extensión será .html, por lo tanto, si visitamos una ruta que haga match sin extensión el Content-Type será text/html; charset=UTF-8, así de sencillo.

Rutas con nombres en Symfony

Si queremos también tenemos la posibilidad de asignar un nombre a una ruta para poder redirigir a ella más adelante, por ejemplo.


Para hacer la prueba primero crear su archivo de vista y después abre el archivo src/AppBundle/Resources/views/Article/index.html.twig y añade lo siguiente para generar el enlace a esta ruta.


Y de momento eso es todo, como puedes ver el trabajo con rutas Symfony es sencillo y completo, tiene de todo para poder crear rutas dinámicas de forma muy sencilla, algo necesario hoy en día para el desarrollo de cualquier aplicación.