我使用HMVC和CI最后版本而我想将HMVC的所有模块路由到控制器CI
如果我使用
$route[‘admin/(:any)’] = “admin/”;
$route[’(:any)’] = “index/index/$1”;
$route[’(:any)/(:any)’] = “index/index/$1/$2”;
$route[’(:any)/(:any)/(:any)’] = “index/index/$1/$2/$3”;
不是解决方案,因为网址可以包含多个细分
我想路由控制器,方法和所有参数,如下所示:
$route[’(:any)/(:any)/ *all parameters *’] = “index/index/$1/$2/ *array($parameters)*”;
或者如何停止HMVC的路线,我不需要HMVC的路线。
请帮助。
谢谢,Jhon。
答案 0 :(得分:0)
您不需要路由,codeigniter已经这样做了。
从全新的CI安装中,使用welcome
控制器:
public function index()
{
$args = $this->uri->uri_to_assoc();
echo "<pre>";
print_r($args);
echo "</pre>";
// $this->load->view('welcome_message');
}
访问[http://localhost/codeigniter2.1.2/index.php/welcome/index/param1/param1_value/param2/param2_value/param3/etc]
得出这个:
Array
(
[param1] => param1_value
[param2] => param2_value
[param3] => etc
)
所以你有你的控制器[welcome],你的函数[index]以及之后的所有参数;不需要乱用路由。
您无需考虑可能路由的每个可能参数。
您可以使用以下路线:
$route[‘admin/(:any)’] = “admin/”;
$route[’(:any)/(:any)/(:any)’] = “index/index/$1/$2/$3”;
然后,除admin/*
之外的每个网址都将路由到index/index
。从那时起,您可以获取上面发布的参数或$this->uri->segment(n);
n
所需的细分参数(因此,$this->uri->segment(3)
将从上面的路线返回$1
)。