Cakephp嵌套路由

时间:2011-04-10 08:42:56

标签: php cakephp

我有一个名为Items的控制器和另一个名为Categories的控制器。项目可能属于不同的类别。

我拥有的路线是

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

这是我的routes.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]+"));

问题是第三条路线在路由到不应该的物品控制器时失败。

如何解决此问题?

2 个答案:

答案 0 :(得分:4)

要小心路线的顺序......蛋糕会与第一次出现匹配,所以请尝试使用这样的路线:

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 :(得分:1)

你在config / routes.php

中的

放一行

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

或类似的东西。

它会将所有你/ items / categories重定向到类别控制器的索引操作。

用于管理页面(使用管理员前缀的操作):

Router::connect('/items/categories', array('controller' => 'categories',
 'action' => 'index','admin'=>true));
相关问题