Foros del Web » Programando para Internet » PHP » Symfony »

ruteo en symfony

Estas en el tema de ruteo en symfony en el foro de Symfony en Foros del Web. Hola amigos, les explico mi problema. Estoy utilizando el archivo routing.yml para definir las rutas de mi aplicación. Según tengo entendido, el alias de las ...
  #1 (permalink)  
Antiguo 04/08/2015, 04:56
 
Fecha de Ingreso: abril-2013
Mensajes: 75
Antigüedad: 11 años, 7 meses
Puntos: 2
ruteo en symfony

Hola amigos, les explico mi problema.

Estoy utilizando el archivo routing.yml para definir las rutas de mi aplicación. Según tengo entendido, el alias de las rutas debe ser único e irrepetible, y del mismo modo (supongo) que las URL.

La cuestión, es que en uno de mis archivos routing.yml tengo la siguiente configuración:

Código:
list_halls:
    path:     /admin/list-halls/
    defaults: { _controller: HallBundle:Hall:list }
    
details_hall:
    path:     /admin/hall/{id}/details/
    defaults: { _controller: HallBundle:Hall:details }
    
update_hall:
    path:     /admin/hall/{id}/update/
    defaults: { _controller: HallBundle:Hall:update }
    
delete_hall:
    path:     /admin/hall/{id}/delete/
    defaults: { _controller: HallBundle:Hall:delete }
    
create_hall:
    path:     /admin/hall/create/asdf/
    defaults: { _controller: HallBundle:Hall:create }
Si os fijáis en la última ruta 'create_hall' he añadido un parámetro asdf/ , si dejo la ruta simplemente como '/admin/hall/create/' se produce un error.

Me gustaría saber por qué ocurre esto? Existe algún tipo de restricción a la hora de definir el ruteo? Me gustaría que las URL fuesen claras y descriptivas, evitando tener que añadir parámetros innecesarios.
  #2 (permalink)  
Antiguo 04/08/2015, 07:54
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: ruteo en symfony

Eso que sucede es lo esperado; tu estas declarando la ruta /admin/hall/create/asdf no la ruta /admin/hall/create/ así que no coinciden. Si quieres que esa ruta haga match con las dos opciones usa parámetros opcionales: http://symfony.com/doc/current/book/...l-placeholders
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 04/08/2015, 08:37
 
Fecha de Ingreso: abril-2013
Mensajes: 75
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: ruteo en symfony

Cita:
Iniciado por hhs Ver Mensaje
Eso que sucede es lo esperado; tu estas declarando la ruta /admin/hall/create/asdf no la ruta /admin/hall/create/ así que no coinciden. Si quieres que esa ruta haga match con las dos opciones usa parámetros opcionales: http://symfony.com/doc/current/book/...l-placeholders
No no, yo quiero que sea /admin/hall/create/ pero poniéndolo así se produce un error, y tengo que hacer la "ñapa" de añadirle el /asdf/
Tengo otros bundles en los que también realizo las mismas tareas del CRUD, y siempre se produce el mismo error.
La verdad es que no me explico por qué ocurre esto.
  #4 (permalink)  
Antiguo 04/08/2015, 10:16
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 11 años, 4 meses
Puntos: 379
Respuesta: ruteo en symfony

La otra opción es que hagas dos rutas una para /admin/hall/create/ y otra para /admin/hall/create/asdf pero honestamente no lo veo necesario si utilizas los parámetros. Pero ya queda a tu decisión
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 07/08/2015, 01:23
Avatar de cluster28  
Fecha de Ingreso: enero-2008
Ubicación: Donostia - San Sebastián
Mensajes: 756
Antigüedad: 16 años, 10 meses
Puntos: 32
Respuesta: ruteo en symfony

Se supone que en los errores te dice lo que pasa. Si pones un pantallazo puede que descubramos algo.
  #6 (permalink)  
Antiguo 09/08/2015, 02:42
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 10 meses
Puntos: 206
Respuesta: ruteo en symfony

Pon el create en primer lugar.
O mejor aún, usa rutas REST:

Código yml:
Ver original
  1. list_halls:
  2.     path:     /admin/hall
  3.     defaults: { _controller: HallBundle:Hall:list }
  4.     methods:  [GET]
  5.    
  6. details_hall:
  7.     path:     /admin/hall/{id}
  8.     defaults: { _controller: HallBundle:Hall:details }
  9.     methods:  [GET]
  10.    
  11. update_hall:
  12.     path:     /admin/hall/{id}
  13.     defaults: { _controller: HallBundle:Hall:update }
  14.     methods:  [PUT]
  15.    
  16. delete_hall:
  17.     path:     /admin/hall/{id}
  18.     defaults: { _controller: HallBundle:Hall:delete }
  19.     methods:  [DELETE]
  20.    
  21. create_hall:
  22.     path:     /admin/hall
  23.     defaults: { _controller: HallBundle:Hall:create }
  24.     methods:  [POST]

Etiquetas: ruteo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:13.