Сохранение родительских слагов в CakePHP

Я экспериментирую с оптимизированными для SEO URL-адресами в CakePHP так эффективно, как только могу, мне удалось использовать текущий формат, в каждом примере используется представление функции ($ slug), за исключением первого примера, в котором используется функция index ().

/категории/

/категории/книги/

/categories/books/it-and-computing/

Но что, если в IT & Computing есть подкатегория «Веб-разработка»? Я бы хотел, чтобы URL-адрес стал:

/categories/books/it-and-computing/web-разработка/

Я не уверен, как это сделать, не создавая слишком много маршрутов. Вот мой код маршрута:

Router::connect('/categories/', array('controller' => 'categories', 'action' => 'index'));

Router::connect('/categories/:slug', array('controller' => 'categories', 'action' => 'view'), array('pass' => array('slug')) );

Router::connect('/categories/:parent/:slug', array('controller' => 'categories', 'action' => 'view'), array('pass' => array('parent', 'слизняк')));

Любая помощь будет принята с благодарностью

С уважением

Стивен


person G3vie    schedule 03.10.2011    source источник


Ответы (1)


// in routes.php
Router::connect('/categories/:row:lastslash',array('controller' => 'settings', 'action' => 'show',),array(
      'pass'=>array('row'),
      'row'=>'.*?',
      'lastslash'=>'\/?'
));

//in controller
function show($row = ""){
  if($row){
    $categories = split('/',$row);

    ?><pre><? print_r($categories);?></pre><?die();
  }else{
    die('do something else');
  }
}

/categories/books/computing/web-development/cakephp/

результат:

Array
(
    [0] => books
    [1] => computing
    [2] => web-development
    [3] => cakephp
)

/категории/

результат:

do something else

/категории/книги

результат:

Array
(
    [0] => books
)
person sukinsan    schedule 03.10.2011
comment
Я также надеюсь, что этот вопрос получит больше ответов. Что-то, что работает для подкатегорий n-уровня. - person Henri; 03.10.2011
comment
Вышеизложенное не сработает, я думаю, вы неправильно поняли вопрос. Веб-сайт должен хранить полную историю в URL-адресе, что-то вроде хлебных крошек. /categories/books/computing/web-development/cakephp/и т. д. - person G3vie; 03.10.2011
comment
Похоже, это именно то, что я ищу, я не могу попробовать это сейчас, но я сделаю это позже. Большое спасибо, сукинсан :) Я бы проголосовал за вас, но я слишком новичок на сайте. Ваше здоровье - person G3vie; 04.10.2011