CodeIgniter - 当使用$ route ['(:any)'] ='pages / view / $ 1'时如何使用其他控制器?

时间:2012-06-13 20:59:01

标签: codeigniter routing controllers

使用时

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

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

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

它不起作用。我猜它会用

pages/view/del/$1

删除项目时,

而不是我的crud-controller。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:10)

如上所述,$route['(:any)']将匹配任何网址,因此请将之前的其他自定义路由放置在“全能”路线中:

$route['del/(:any)'] = 'crud/del';
// Other routes as needed...
$route['(:any)'] = 'pages/view/$1';

答案 1 :(得分: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";

答案 2 :(得分: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。