我很高兴尝试弄清楚如何在带有命名参数数组的URL上使用slug:
网址如下:/controller/action/param:1-Slug1/param:2-Slug2/param:3-Slug3
这为我提供了以下请求对象中的命名params数组:
[named] => Array
(
[param] => Array
(
[0] => 1-Slug1
[1] => 2-Slug2
[2] => 3-Slug3
)
)
如何配置考虑使用slug的路线?这样输出是:
[named] => Array
(
[param] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
)
感谢您的帮助。
答案 0 :(得分:0)
首先,您不需要那些[0], [1]
内容,通过命名参数相同,您将自动创建一个数组。因此,将您的网址更改为
/controller/action/param:1-Slug1/param:2-Slug2
您的路线如下所示,
Router::connect('/:controller/:action/*');
通过在结尾处传递星星,路线将自动通过您添加的任何额外参数。这将允许您将所需数量的参数传递到所需的URL。
如果要使用命名参数,路由将如下所示。
Router::connect('/:controller/:action:/:slug', array(), array('slug' => '[a-z0-9-]+'));
将匹配正则表达式匹配正则表达式以匹配路由。正则表达式允许任何字母,数字和连字符。
在此处阅读更多内容,http://book.cakephp.org/2.0/en/development/routing.html#passing-parameters-to-action