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
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
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