2010-06-17 76 views
5

最近,我試圖將我的應用程序從CakePHP遷移到Grails。到目前爲止,這一直是一帆風順,我可以用CakePHP做的所有事情,我可以在Grails中使用更少的代碼來完成。不過,我有一個問題:Grails中的URL映射前綴

在CakePHP中,有一個網址前綴功能,使您給前綴一定作用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 2010-06-17 10:50:24

5

Grails的URL映射文檔不幫助你在這種特殊情況下(AMRA,下一次自己嘗試一下,並張貼一個答案只有當它的任何幫助)。丹尼爾的解決方案是接近,但不會工作,因爲:

  1. 時動態創建
  2. 所有命名參數不包括「控制器」,「行動」和「身份證」是訪問的動作部分必須是封閉通過params對象

一個解決辦法是這樣的:

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

的關鍵不在於名稱的參數爲「行動」,因爲它似乎是直接映射到一個行動,不能被重寫。

我也試圖與通用前綴一個動態的解決方案,它似乎工作,以及:

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