2010-04-28 1 views
0

나는 케이크에서 특별한 라우팅을 할 필요가 있지만, 내 인생을 생각할 수는 없다.Cake PHP 라우팅 문제

내가 /shop에서 상점의 컨트롤러가, URL의 형식은 다음과 같습니다 URL이 있다면 라우팅에서

/shop/:category/:sub_category/:product_slug 

내가 예를 들어, 다른 행동을 URL의 각 부분을 보낼 필요 단지 /shop/cakes 그것은 가게의 카테고리 액션에 갈 것입니다.

그러나 URL이 /shop/cakes/macaroons 또는 /shop/cakes/fairy 인 경우 상점 컨트롤러의 하위 카테고리 작업으로 이동합니다.

다시 /shop/cakes/macaroons/pistachio에 대한 동일한 내용은 상점 컨트롤러의 제품 조치로 이동합니다.

라우팅에서 어떻게해야합니까?

으로 시작하는 메시지
Router::connect('/shop/:category/:sub_category/:product_slug' ... 

아니면 내가 어떻게해야합니까? 감사.

+0

"레일"태그? – NeilS

+0

예, cakephp는 레일을 기반으로합니다. – Smickie

답변

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' 
* ) 
*/