2010-06-17 3 views
5

В последнее время я пытаюсь перенести приложение из CakePHP в Grails. До сих пор это было плавное плавание, все, что я могу сделать с CakePHP, я могу сделать это с гораздо меньшим количеством кода в Grails. Тем не менее, у меня есть один вопрос:Префикс URL Mapping в Grails

В CakePHP, есть URL Приставка функция, которая позволяет дать префикс к определенному URL действия, например, если у меня есть эти действия в мой контроллер:

PostController
admin_add
admin_edit
admin_delete

я могу просто получить доступ к нему из U RL:

MySite/администратор/запись/добавить
MySite/администратор/запись/редактирование/1
MySite/администратор/запись/удаление/2

вместо:

MySite/запись/admin_add
MySite/запись/admin_edit/1
MySite/запись/admin_delete/2

Есть ли все-таки сделать это в Grails или, по крайней мере, альтернатива этому?

ответ

1

Я не проверял, но попробовать это:

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

Он строит имя действия от префикса и методы.

+0

Я попытался это, но проблема, мне нужно повторить для всех действий, ... – Furunomoe

5

Grails URL Отображение документация не поможет вам в этом конкретном случае (Амра, в следующий раз попробуйте сам и отправить ответ, только если это любая помощь). Решение Даниила было близко, но не будет работать, потому что:

  1. часть действия должны быть в затворе при создании динамически
  2. все названные параметры за исключением «контроллер», «действие» и «ID» доступны через PARAMS объект

решение может выглядеть следующим образом:

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

ключ не назвать параметр как «действие», потому что, как представляется, непосредственно сопоставляются к действию и не может быть преодолено.

Я также попытался динамическим решением с родовыми префиксами и это похоже на работу, а также:

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