Cakephp Вложенные маршруты - PullRequest
0 голосов
/ 10 апреля 2011

У меня есть контроллер с именем Items и еще один с именем Categories. Элементы могут принадлежать к разным категориям.

У меня есть следующие маршруты:

/items
/items/:item_id
/items/categories
/items/categories/:category_id

А это мои маршруты. Php

Router::connect('/items', array('controller' => 'items', 'action' => 'index');
Router::connect('/items/:item_id', array('controller' => 'items', 'action' => 'view'), array('pass' => array('item_id')), array("item_id" => "[0-9]+"));
Router::connect('/items/categories', array('controller' => 'categories', 'action' => 'index'));
Router::connect('/items/categories/:category_id', array('controller' => 'categories', 'action' => 'view', array('pass' => array('category_id')), array("category_id" => "[0-9]+"));

Проблема в том, что третий маршрут завершается ошибкой, поскольку он направляет на контроллер Items, чего не должно быть.

Как я могу решить эту проблему?

Ответы [ 2 ]

4 голосов
/ 10 апреля 2011

будьте осторожны с порядком ваших маршрутов ... торт будет соответствовать первому вхождению, поэтому попробуйте использовать ваши маршруты следующим образом:

Router::connect('/items', array('controller' => 'items', 'action' => 'index');
Router::connect('/items/categories', array('controller' => 'categories', 'action' => 'index'));
Router::connect('/items/categories/:category_id', array('controller' => 'categories', 'action' => 'view', array('pass' => array('category_id')), array("category_id" => "[0-9]+"));
Router::connect('/items/:item_id', array('controller' => 'items', 'action' => 'view'), array('pass' => array('item_id')), array("item_id" => "[0-9]+"));

удачи

1 голос
/ 10 апреля 2011

в вашем config / rout.php

поставить строку

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

или что-то подобное.

это перенаправит всех вас / элементов / категорий в индексдействие контроллера категорий.

для страниц администратора (действия, использующие префикс admin):

Router::connect('/items/categories', array('controller' => 'categories',
 'action' => 'index','admin'=>true));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...