使用时
$route['(:any)'] = 'pages/view/$1';
我想在我的路由中使用其他控制器,例如:
$route['del/(:any)'] = 'crud/del';
它行不通。我想它会使用
pages/view/del/$1
删除项目时不是我的crud-controller。我该如何解决这个问题?
使用时
$route['(:any)'] = 'pages/view/$1';
我想在我的路由中使用其他控制器,例如:
$route['del/(:any)'] = 'crud/del';
它行不通。我想它会使用
pages/view/del/$1
删除项目时不是我的crud-controller。我该如何解决这个问题?
如前所述,$route['(:any)']
将匹配任何URL,因此将您的其他自定义路由放在“catch-all”路由之前:
$route['del/(:any)'] = 'crud/del';
// Other routes as needed...
$route['(:any)'] = 'pages/view/$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";
我知道这是一个老问题,但我发现自己是一个很好的解决方案。
默认情况下,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。