【问题标题】:CakePHP Routes: Isolating passed parameters in stringsCakePHP Routes:隔离字符串中传递的参数
【发布时间】:2011-09-05 19:04:23
【问题描述】:

我正在尝试为我的 CakePHP 应用程序设置路由。

我想要的一个 URL 示例是 /:slug-c-:id/。 (EGexample.com/foo-c-1/)

这个 URL 应该有两个传递参数::slug:id
但是,CakePHP 将这两个参数视为:slug-c:id

我尝试像 :slug\-c-:id 这样分隔路由,但是当我使用 HTML 帮助器构建 URL 时,它在它构建的字符串中包含 \。 (EGexample.com/foo\-c-1/

还有其他方法可以将传递的参数与其他字符串分开吗?类似于 PHP 的 This is a string with a {$var}adjacent to letters

【问题讨论】:

    标签: cakephp routes


    【解决方案1】:

    我发现了一个我不想使用的有点老套的解决方案,但基本上我将路线设置为:

    /:slug-:cslug-:id/*并将:cslug的正则表达式设置为c

    问题是每次我使用 HTML 助手设置 URL 时都必须这样做

    array(
       'controller' => 'products'
       'action' => 'index'
       'slug' => 'Foo'
       'cslug' => 'c'
       'id' => 1
    )
    

    【讨论】:

      【解决方案2】:

      将其设为/:slug-:id/ 并设置 slug 的正则表达式以包含该“-c”。

      我不完全确定您是否可以为 slug 设置贪婪的正则表达式,并在末尾带有一个 id。此外,如果您使用 Inflector 创建 slug(这是推荐的方式),它会创建带有下划线的 slug。所以我认为最好改用'_c'。正则表达式应该是[A-Za-z0-9_]+_c

      更多:http://book.cakephp.org/view/945/Routes-Configuration

      【讨论】:

        猜你喜欢
        • 2014-01-28
        • 2018-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-26
        • 2013-02-05
        • 2015-03-30
        • 1970-01-01
        相关资源
        最近更新 更多