我需要在我的网站上定义查看帖子的路线,我遇到了一些麻烦。
我需要捕获的URL采用以下格式:
http://mysite.com/category/10-post-slug
我做了这条不起作用的路线:
Router::connect(
'/:category/:id-:slug',
array('controller' => 'posts', 'action' => 'view'),
array('category' => '[a-z0-9-]+', 'id' => '[0-9+]', 'slug' => '[a-z0-9-]+')
);
而不是转到view
控制器的posts
操作,而是转到稍后在routes.php
中定义的另一条路线:
Router::connect(
'/:parent/:category',
array('controller' => 'posts', 'action' => 'viewCategory'),
array('parent' => '[a-z0-9-]+', 'category' => '[a-z0-9-]+')
);
为什么我的第一条路线与网址/category/10-post-slug
不匹配?
答案 0 :(得分:1)
Router::connect(
'/:category/:id-:slug',
array('controller' => 'posts', 'action' => 'view'),
array('category' => '[a-z0-9-]+', 'id' => '[0-9+]', 'slug' => '[a-z0-9-]+')
);
^
您拥有的有效ID的模式是以下列表中的任何单个字符:
0123456789+
所以它不会匹配任何高于9的id。相反,你需要:
Router::connect(
'/:category/:id-:slug',
array('controller' => 'posts', 'action' => 'view'),
array('category' => '[a-z0-9-]+', 'id' => '[0-9]+', 'slug' => '[a-z0-9-]+')
);
^
哪个匹配任何数字。