CakePHP路由:隔离字符串中传递的参数

时间:2011-09-05 19:04:23

标签: cakephp routes

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

我想要的网址的一个示例是/:slug-c-:id/。 (EG example.com/foo-c-1/

此网址应包含两个传递的参数::slug:id 但是,CakePHP将这两个参数视为:slug-c:id

我尝试将此路由分隔为此:slug\-c-:id,但是当我使用HTML帮助程序构建URL时,它在其构建的字符串中包含\。 (EG example.com/foo\-c-1/

是否有另一种方法可以将传递的参数与其他字符串分开?像PHP的This is a string with a {$var}adjacent to letters

之类的东西

2 个答案:

答案 0 :(得分:0)

我找到了一个有点讨厌的解决方案,我宁愿不使用,但基本上我设置了我的路线:

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

每次我使用HTML帮助程序设置URL时,问题就是

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

答案 1 :(得分:0)

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

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

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