2010-06-17 14 views
5

Recientemente, estoy intentando migrar mi aplicación de CakePHP a Grails. Hasta ahora ha sido un buen viaje, todo lo que puedo hacer con CakePHP, puedo hacerlo con mucho menos código en Grails. Sin embargo, tengo una pregunta:Prefijo de asignación de URL en Grails

En CakePHP, hay una característica Prefijo de URL que le permite dar prefijo a una determinada URL de acción, por ejemplo, si tengo estas acciones en mi controlador:

PostController
admin_add
admin_edit
admin_delete

que puede simplemente acceder a él desde la U RL:

mysite/admin/post/añadir
mysite/admin/post/editar/1
mysite/admin/post/borrar/2

en lugar de:

mysite/post/admin_add
mysite/post/admin_edit/1
mysite/post/admin_delete/2

¿Hay alguna forma de hacerlo en Grails, o al menos una alternativa para hacer esto?

Respuesta

1

no he probado, pero intento esto:

"mysite/$prefix/$controller/$method/$id?"{ 
    action = "${prefix}_${method}" 
} 

Se construye el nombre de la acción del prefijo y el método.

+0

He intentado esto, pero el problema es, tengo que repetir esta operación para todas las acciones ... – Furunomoe

5

Griales documentación URL Asignaciones no le ayuda en este caso particular (Amra, la próxima vez trate de hacerlo solo y enviar una respuesta sólo si te sirve de ayuda). La solución de Daniel estaba cerca, pero no funcionaría, ya que:

  1. la parte de acción debe estar en un cierre cuando se crean dinámicamente
  2. todos los parámetros con nombre excluyendo "controlador", "acción" y "id" son accesibles a través de los parametros objeto

Una solución podría tener este aspecto:

"/admin/$controller/$adminAction?/$param?"{ 
    action = { "admin_${params.adminAction}" } 
} 

la clave es no nombrar el parámetro como "acción", ya que parece ser asignada directamente a una acción y no puede ser anulado.

También probé una solución dinámica con prefijos genéricos y parece que funciona así:

"/$prefix/$controller/$adminAction?/$param?"{ 
    action = { "${params.prefix}_${params.adminAction}" } 
} 
Cuestiones relacionadas