1

我有这些路线:

$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。

我怎样才能根据需要进行这项工作?

4

1 回答 1

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]+))来创建您需要的规则。

于 2013-04-09T23:19:24.143 回答