2010-04-28 129 views
0

我需要在蛋糕做一些特殊的路由,但不能爲我的生活弄明白。蛋糕PHP路由問題

我在/shop店控制器,該網址的格式爲:

/shop/:category/:sub_category/:product_slug 

在路由我需要在網址的每一部分發送到不同的動作,例如,如果網址是隻是/shop/cakes它會去商店的分類行動。

但是,如果網址是/shop/cakes/macaroons/shop/cakes/fairy它將轉到店鋪控制器上的子類別操作。

而且/shop/cakes/macaroons/pistachio也一樣會轉到店鋪控制器上的產品動作​​。

我該如何在路由中解決這個問題?東西開始

Router::connect('/shop/:category/:sub_category/:product_slug' ... 

或者我的方式離開的標誌?謝謝。

+0

與 「軌道」 標籤? – NeilS 2010-04-28 18:42:34

+0

是的,cakephp基於軌道非常緊密。 – Smickie 2010-04-28 20:02:12

回答

1

你需要三條路線,順序如下:

Router::connect(
    '/shop/:category/:sub_category/:product_slug', 
    array('controller'=>'shops','action'=>'product'), 
    array('pass'=>array('product_slug')) 
); 
// Dispatches to ShopsController::product($product_slug) 
/* 
* Reverse route: 
*  array(
*   'controller'=>'shops','action'=>'product', 
*   'category'=>$some_category', 'sub_category'=>$some_sub_category 
*   'product_slug'=>$some_product_slug 
* ) 
*/ 

Router::connect(
    '/shop/:category/:sub_category', 
    array('controller'=>'shops','action'=>'subcategory'), 
    array('pass'=>array('sub_category')) 
); 
// Dispatches to ShopsController::subcategory($sub_category) 
/* 
* Reverse route: 
*  array(
*   'controller'=>'shops','action'=>'product', 
*   'category'=>$some_category', 'sub_category'=>$some_sub_category 
* ) 
*/ 

Router::connect(
    '/shop/:category', 
    array('controller'=>'shops','action'=>'category'), 
    array('pass'=>array('category')) 
); 
// Dispatches to ShopsController::category($category) 
/* 
* Reverse route: 
*  array(
*   'controller'=>'shops','action'=>'product', 
*   'category'=>$some_category' 
* ) 
*/