使用时
$route['(:any)'] = 'pages/view/$1';
我想在路由中使用其他控制器,例如:
$route['del/(:any)'] = 'crud/del';
它不起作用。我猜它会用
pages/view/del/$1
而不是我的crud-controller。我该如何解决这个问题?
答案 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。