Cake PHP Routing проблема - PullRequest
       16

Cake PHP Routing проблема

0 голосов
/ 28 апреля 2010

Мне нужно сделать какую-то особенную маршрутизацию в торте, но я не могу это понять на всю жизнь.

У меня есть контроллер магазина на /shop, формат URL будет:

/shop/:category/:sub_category/:product_slug

В маршрутизации мне нужно отправить каждую часть URL на свое действие, например, если бы URL был просто /shop/cakes, он перешел бы к действию категории магазина.

Однако, если бы URL был /shop/cakes/macaroons или /shop/cakes/fairy, он перешел бы к действию подкатегории на контроллере магазина.

И то же самое для /shop/cakes/macaroons/pistachio пойдет на действие продукта на контроллере магазина.

Как бы я поступил об этом в маршрутизации? Нечто, начинающееся с

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

Или я далеко от цели? Благодарю.

1 Ответ

1 голос
/ 28 апреля 2010

Вам понадобятся три маршрута в следующем порядке:

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