2

CodeIgniterをベースにしたオンラインストアを構築しています。URLをこのようにしたいですか?

http://example.com/[product-category]/[product-name]

問題は、のような非製品ページも/checkout/step-1あり、これらはまだ機能する必要があるということです。これを達成するための最良の方法は何ですか?

4

2 に答える 2

3

ルーティング構成ファイル(application / config / routers.php)で定義したルートは、定義された順序に従います。より具体的なルートを最初に入力すると、最後に一般的なキャッチオールルートを使用できます。

$routes['checkout/step_(\d+)'] = 'checkout/step_$1';
// calls the checkout class, step_x method

$routes['(.*)/(.*)'] = 'product_class/product_method/$1/$2';
// calls the product class, and product method, passing category and name as parameters

このアプローチの欠点は、コントローラー/アクションに直接マップするルートも含めて、このファイルですべてのルートを定義する必要があることです。より良いアプローチは、製品ルートを「product」で開始して、次のようにすることです。

http://example.com/products/ [product-category] ​​/ [product-name]

このアプローチでは、次のような製品にのみ適用されるルーティングルールを定義できます。

$routes['products/(.*)/(.*)'] = 'product_class/product_method/$1/$2';

これは、サイト内のすべてのコントローラー/アクションの組み合わせに対してconcreateルートを定義する必要がないため、より優れています。

http://ellislab.com/codeigniter/user-guide/general/routing.html

于 2013-02-01T15:14:38.320 に答える
2

application / config /routes.php内。例:

$route['checkout/(:any)'] = "checkout/test_controller_method/$1";
于 2013-02-01T15:14:44.380 に答える