CodeIgniterをベースにしたオンラインストアを構築しています。URLをこのようにしたいですか?
http://example.com/[product-category]/[product-name]
問題は、のような非製品ページも/checkout/step-1
あり、これらはまだ機能する必要があるということです。これを達成するための最良の方法は何ですか?
CodeIgniterをベースにしたオンラインストアを構築しています。URLをこのようにしたいですか?
http://example.com/[product-category]/[product-name]
問題は、のような非製品ページも/checkout/step-1
あり、これらはまだ機能する必要があるということです。これを達成するための最良の方法は何ですか?
ルーティング構成ファイル(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
application / config /routes.php内。例:
$route['checkout/(:any)'] = "checkout/test_controller_method/$1";