Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/11/2011, 11:14
nicostone
 
Fecha de Ingreso: marzo-2009
Mensajes: 76
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: Problemas Routing Compartidas

Me parece que me he explicado mal, ya que la rutas estan correctas como estan, el problema es de donde las lee symfony 2 y como symfony las empieza a buscar en el ultimo ruta que se coloco en el routing.yml en la carpeta app/config y la encuentra ahí me quiere agregar el prefijo que le coloco en el ultimo del routing.yml es decir si en la ultima ruta coloco el prefijo /Administrador (Como es el caso de abajo "app/config/routing.yml") me quiere agregar el prefijo /Administrador aunque el que este logueado sea un usuario y la deberia leer de usuario_routing.yml pero como esta ultimo esta @MiBundle/Resources/config/admin_routing.yml la comienza a buscar ahi y la encuentra ya que comparten ciertas rutas pretende poner el prefio /Administracio.
La solucion poco practica que encuentro es cambiar los nombres de las rutas y mediante un is_granted("ROLE_ADMIN") o is_granted("ROLE_USER") en la vista mostrar una o otra ruta pero me parece muy poco practico como ya comente, ya que para realizar un comentario o para realizar un post tanto el admin como el usuario deberian ver lo mismo para que crear dos rutas para acceder al mismo lado, si lo hago seria simplemente para que me agrege el prefijo correcto.

Ahi van los archivos como para que se den una mejor idea

app/config/security.yml

Código:
access_control:
        - { path: ^/Usuario           , roles: ROLE_USER }
        - { path: ^/Administrador  , roles: ROLE_ADMIN }
        - { path: ^/registro            , roles: IS_AUTHENTICATED_ANONYMOUSLY }
app/config/routing.yml

Código:
usuario:
    resource: "@MiBundle/Resources/config/usuario_routing.yml"
    prefix:   /Usuario

admin:
    resource: "@MiBundle/Resources/config/admin_routing.yml"
    prefix:   /Administrador


/resources/config/usuario_routing.yml

Código:
#Compartido #
MiBundle_realizar_comentario:
    pattern:  /realizar_comentario
    defaults: { _controller: MiBundle:Comentario:realizar }
/resources/config/admin_routing.yml

Código:
MiBundle_admin_bloquear_usuario:
    pattern:  /bloquer_usuario
    defaults: { _controller: MiBundle:Usuario:bloquer }
    

MiBundle_admin_subir_rol:
    pattern:  /subir_rol
    defaults: { _controller: MiBundle:Usuario:subir }

#Compartido #
MiBundle_realizar_comentario:
    pattern:  /realizar_comentario
    defaults: { _controller: MiBundle:Comentario:realizar }
espero que se haya entendido mejor, mi problema se podria decir es que lea del archivo de enrutamiento correcto para que anteponga el prefijo correcto.

Por lo que he leído tengo que agregar los is_granted en las vistas y realizar dos rutas distintas una para el usuario_routing.yml y otra para admin_routing.yml aunque ambas llamen al mismo controlador y al mismo método del controlador, lo que desearia es que dependiendo del usuario logueado (Usuario o Admin) lea el routing correcto (usuario_routing.yml o admin_routing.yml), creo que me explique mejor en este ultimo parrafo que en todo lo anterior.

Ahora quizás se preguntan porque lo hago así y no de otra manera que seria mas simple, es porque me gusta que cuando se loguea un usuario con rol usuario quede la url quede miweb.com/Usuario/Controlador/metodo es decir siempre quede el prefijo Usuario y cuando se loguea un administrador quede miweb/Administrador/Controlador/metodo, desde ya muchas gracias por leer el post

Gracias por la rápida respuesta carlos_belisario.

Saludos.

Nico.

Última edición por nicostone; 17/11/2011 a las 12:12