Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Definir ruta con parámetros opcionales en Symfony

17 de febrero de 2015

Hola, muy buenas!

Tengo una duda, no sé si se puede definir en una misma regla de ruta una que acepte parámetros opcionales, de tal manera que sea válida aunque éstos no existan. Es más fácil verlo con un ejemplo, sea la ruta:

ruta_ejemplo:
    path:     /sitio/catalogo/{serie}/{modelo}
    defaults: { _controller: Controller:Default:index, serie:null, modelo:null }

Y estas deberían ser rutas válidas o aceptadas:

/sitio/catalogo
/sitio/catalogo/gama-alta/
/sitio/catalogo/gama-baja/item-1 (sólo esta es aceptada)

Pero sólo la última es válida; es decir, sólo si se especifican siempre los dos parámetros en la URL. ¿No se puede definir esta situación en una misma definición de ruta?

Gracias por la atención y un saludo.


Respuestas

#1

Cuando defines un valor por defecto para las partes variables de una ruta, esas partes se convierten automáticamente en opcionales. Así que el ejemplo que muestras sí que debería funcionarte bien.

Siempre que sucede un problema de enrutamiento, deberías ejecutar el comando router:match para comprobar qué sucede cuando intentas acceder a una determinada URL:

$ php app/console router:match /sitio/catalogo/gama-alta/

El resultado de este comando te dirá si hay alguna otra ruta de la que no eres consciente y que está respondiendo a esta URL.

@javiereguiluz

17 febrero 2015, 22:33
#2

Hola Javier, gracias por tu respuesta.

Me había confundido con la configuración producción y desarrollo. Tenía una regla para hacer pruebas que lo alteraba todo, pero de tal manera que me daba un error 404 en ese caso. Y por eso pensé que la teoría de parámetros opcionales no resultaba ser como pone en el manual y escribí esta pregunta.

Mil perdones por preguntar lo evidente y un saludo.

@mabuitragor

19 febrero 2015, 9:29