2

使用时

$route['(:any)'] = 'pages/view/$1';

我想在我的路由中使用其他控制器,例如:

$route['del/(:any)'] = 'crud/del';

它行不通。我想它会使用

pages/view/del/$1

删除项目时不是我的crud-controller。我该如何解决这个问题?

4

3 回答 3

10

如前所述,$route['(:any)']将匹配任何URL,因此将您的其他自定义路由放在“catch-all”路由之前:

$route['del/(:any)'] = 'crud/del';
// Other routes as needed...
$route['(:any)'] = 'pages/view/$1';
于 2012-06-13T21:45:48.240 回答
1

它百分百的工作

$route['(:any)'] url is placed last in your routes file

$route['(:any)/company_product_deal_detail']    =   "mypage_product_picture/deal_detail/$1";
$route['(:any)/company_service_deals/(:any)']    =   "mypage_service_deal_list/index/$1";
$route['(:any)/company_service_deals']    =   "mypage_service_deal_list/index/$1";

$route['(:any)']    =   "company/index/$1";
于 2013-03-20T11:02:48.773 回答
0

我知道这是一个老问题,但我发现自己是一个很好的解决方案。

默认情况下,CodeIgniter 优先考虑路由配置中的 URL(即使指定了直接控制器、方法等),所以我以这种方式颠倒了这个优先级:

system/core/Router.php查找_parse_routes方法中。

在文字路由匹配下添加此代码:

$cont_segments = $this->_validate_request($this->uri->segments);
if ($cont_segments == $this->uri->segments) {
  return $this->_set_request($cont_segments);
}

我同意,这种方法有点错误,因为我们从系统/核心编辑文件,但我需要一个快速的解决方案来处理很多 URL。

于 2013-09-10T06:30:59.177 回答