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

CakePHP路由:在字符串中隔离传递的参数,cakephp,routes,Cakephp,Routes,我正在尝试为我的CakePHP应用程序设置路由 我想要的URL的一个例子是/:slug-c-:id/。例如example.com/foo-c-1/ 这个URL应该有两个传递的参数::slug和:id。 但是,CakePHP将这两个参数视为:slug-c和:id 我尝试像这样分离路由:slug \-c-:id,但是当我使用HTML帮助程序构建URL时,它在构建的字符串中包含\。例如example.com/foo \-c-1/ 是否有其他方法将传递的参数与其他字符串分开?类似于PHP的这是一个字符串

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

我想要的URL的一个例子是/:slug-c-:id/。例如example.com/foo-c-1/

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

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


是否有其他方法将传递的参数与其他字符串分开?类似于PHP的这是一个字符串,字母旁边有一个{$var}

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

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

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

array(
   'controller' => 'products'
   'action' => 'index'
   'slug' => 'Foo'
   'cslug' => 'c'
   'id' => 1
)
将其设为/:slug-:id/,并将slug的正则表达式设置为包含该'-c'

我不完全确定您是否可以为slug设置贪婪的正则表达式,并在末尾使用id。此外,如果使用屈折符创建slug(推荐的方法),它将创建带下划线的slug。所以我认为最好用“_c”来代替。正则表达式应该是沿着[A-Za-z0-9_U8;]+\c这条线的东西

详情如下: