最近,我正在尝试将我的应用程序从CakePHP迁移到Grails。到目前为止,它是一帆风顺的,我可以用CakePHP做的一切,我可以用Grails中的代码少做。但是,我有一个问题:
在CakePHP中,有一个URL前缀功能,可以让您为某个操作URL添加前缀,例如,如果我在控制器中有这些操作:
PostController中
admin_add
admin_edit
admin_delete
我可以直接从网址访问它:
mysite的/管理/交/添加
mysite的/管理/后/编辑/ 1
mysite的/管理/交/删除/ 2
而不是:
mysite的/交/ admin_add
mysite的/交/ admin_edit / 1
mysite的/交/ admin_delete / 2
无论如何在Grails中这样做,或者至少可以选择这样做吗?
答案 0 :(得分:5)
Grails URL Mappings文档在这种特殊情况下无法帮助您(amra,下次自己尝试并仅在有任何帮助时发布答案)。 Daniel的解决方案很接近,但不起作用,因为:
解决方案可能如下所示:
"/admin/$controller/$adminAction?/$param?"{
action = { "admin_${params.adminAction}" }
}
关键是不要将参数命名为“action”,因为它似乎直接映射到一个动作而不能被覆盖。
我还尝试了一个带有通用前缀的动态解决方案,它似乎也有效:
"/$prefix/$controller/$adminAction?/$param?"{
action = { "${params.prefix}_${params.adminAction}" }
}
答案 1 :(得分:1)
我没有测试它,但试试这个:
"mysite/$prefix/$controller/$method/$id?"{
action = "${prefix}_${method}"
}
它从前缀和方法构造动作名称。
答案 2 :(得分:1)
请查看Grails URL Mappings documentation part