Hola:
Vuelvo a la carga con un error curioso: tengo 2 rutas en 2 controladores diferentes:
Secciones
@Route("/{language}/{section}/", name="seccionWeb")
Historias:
@Route("/{language}/{history}/", name="firstChapterHistoryFrontend")
La cuestión es que cuando llamo a la segunda ruta, la url me la genera correctamente pero llama al controlador de la primera ruta.
He probado a cambiar el orden, a meterele cosas antes y después. A borrar caché y me sigue fallando. ¿alguna idea?
Respuestas
El problema es que el patrón de las rutas es exactamente el mismo. Cuando generas una URL a paritr de una ruta, no hay ningún problema, ya que como estás indicando el nombre de la ruta (path('nombre_ruta', ...)
) Symfony siempre sabe qué ruta utilizar.
Sin embargo, cuando atacas este problema desde el lado contrario, se produce la confusión: dada una URL, ¿cómo sabes que controlador ejecutar si los dos responden a la misma URL? En este caso, Symfony siempre ejecuta el primer controlador que esté definido. Si los dos métodos son de la misma clase, gana el que esté definido primero. Si están en dos clases diferentes, gana el que esté en la clase cuyo nombre vaya primero al ordenar las clases alfabéticamente.
La solución a este problema consiste en añadir algunos requirements
a las rutas, de manera que se puedan distinguir y saber en cada momento cuál hay que ejecutar.
@javiereguiluz
Ya me suponía que de ahí venia el problema. La cuestion es qué requirements
puedo poner para distinguirlos. Porque el formato es similar y la sección y la historia son strings.
@TsubasaAkai