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

Error extraño con las URL en Symfony

2 de agosto de 2015

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

#1

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

2 agosto 2015, 22:19
#2

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

2 agosto 2015, 22:25