我有这些路线:
$route['shop/(:any)/(:any)'] = 'product/category_listing/$1/$2';
$route['shop/(:any)/(:any)/(:any)'] = 'product/product_listing/$1/$2/$3';
当我打电话给这个网址时:
http://mysite.com/shop/mens/trainers/a-product
应该调用product_listing方法,而是调用第一个方法(category_listing),并且永远不会调用product_listing。
如何根据需要进行此项工作?
答案 0 :(得分:3)
数组元素的顺序很重要!
关键字(:any)
匹配所有内容,甚至是斜杠,因此在您的示例中,CodeIgniter会找到第一个匹配的路由,并且不会再查看。
所以,如果我们这样做:
$route['shop/(:any)/(:any)/(:any)'] = 'product/product_listing/$1/$2/$3';
$route['shop/(:any)/(:any)'] = 'product/category_listing/$1/$2';
...然后首先匹配产品列表,然后匹配所有其他产品。
更重要的是,您可以使用正则表达式(例如([a-z0-9]+)
)来创建所需的规则。