【问题标题】:URL Mapping prefix in GrailsGrails 中的 URL 映射前缀
【发布时间】:2011-03-04 18:45:34
【问题描述】:

最近,我正在尝试将我的应用程序从 CakePHP 迁移到 Grails。到目前为止,一切都很顺利,我可以用 CakePHP 做的所有事情,我都可以用更少的 Grails 代码来做。但是,我有一个问题:

在 CakePHP 中,有一个 URL 前缀功能,可以让您为某个操作 url 提供前缀,例如,如果我的控制器中有这些操作:

后控制器
管理员添加
管理员编辑
管理员删除

我可以简单地从 URL 访问它:

我的网站/管理员/发布/添加
mysite/admin/post/edit/1
mysite/admin/post/delete/2

代替:

mysite/post/admin_add
我的网站/post/admin_edit/1
mysite/post/admin_delete/2

在 Grails 中是否可以这样做,或者至少可以替代这样做?

【问题讨论】:

    标签: grails url-routing


    【解决方案1】:

    Grails URL Mappings 文档在这种特殊情况下对您没有帮助(amra,下次自己尝试一下,只有在有帮助时才发布答案)。丹尼尔的解决方案很接近,但不起作用,因为:

    1. 动态创建时,动作部分必须在闭包中
    2. 除“controller”、“action”和“id”之外的所有命名参数都可以通过 params 对象访问

    解决方案可能如下所示:

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

    关键是不要将参数命名为“action”,因为它似乎是直接映射到一个action,不能被覆盖。

    我还尝试了一个带有通用前缀的动态解决方案,它似乎也可以工作:

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

    【讨论】:

      【解决方案2】:

      我没有测试,但试试这个:

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

      它从前缀和方法构造动作名称。

      【讨论】:

        【解决方案3】:

        【讨论】:

          猜你喜欢
          • 2011-02-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-15
          • 1970-01-01
          • 2016-02-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多