我正在尝试为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
答案 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