1

私はこれらのルートを持っています:

$route['shop/(:any)/(:any)'] = 'product/category_listing/$1/$2';
$route['shop/(:any)/(:any)/(:any)'] = 'product/product_listing/$1/$2/$3';

このURLを呼び出すと:

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 に答える