[英]I have Codeigniter project i don't know to write Route
$route['default_controller'] = 'home';
$route['404_override'] = 'home';
$route['translate_uri_dashes'] = FALSE;
$route['(:any)'] = "home/$1";
$route['(:any)/(:any)'] = "home/$1/$1";
$route['(:any)/(:any)/(:any)'] = "home/$1/$1/$1";
$route['(:any)/(:any)/(:any)/(:any)'] = "home/$1/$1/$1/$1";
$route['(:any)/(:any)/(:any)/(:any)/(:any)'] = "home/$1/$1/$1/$1/$1";
$route['project'] = "project";
$route['project/(:any)'] = 'project/$1';
我有默认的家庭控制器,并且我添加了额外的$ 1参数。 家庭控制器完全可以工作,但是就像我想要项目控制器一样
$route['project'] = "project"; Is working
但
$route['project/(:any)'] = 'project/$1';
它不起作用我不知道为什么请帮助我
希望这个能对您有所帮助 :
$route['default_controller'] = 'home';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['project'] = "project";
$route['project/(:any)'] = 'project/$1';
$route['project/(:any)/(:any)'] = 'project/$1/$2';
/*this should be after the project route setting or in the last
according to the precedence of url it always call the first match */
$route['(:any)'] = "home/$1";
$route['(:any)/(:any)'] = "home/$1/$1";
$route['(:any)/(:any)/(:any)'] = "home/$1/$1/$1";
$route['(:any)/(:any)/(:any)/(:any)'] = "home/$1/$1/$1/$1";
$route['(:any)/(:any)/(:any)/(:any)/(:any)'] = "home/$1/$1/$1/$1/$1";
只是建议您的home
控制器路线应该是这样的:
/*home should start with name home where first `(:any)` tends to method name and
second `(:any)` tends to parameters*/
$route['home'] = "home";
$route['home/(:any)'] = "home/$1";
$route['home/(:any)/(:any)'] = "home/$1/$2";
/*you can add many more like this*/
您永远不会在路由中提及方法名称,这就是路由不起作用的原因
尝试这个
$route['project/(:any)'] = 'project/method_name/$1'
home
路由也应该像home/method_name/$1
, home/index/$1/$1
等
你在打电话
$route['project'] = "project";
它会运行您的project
控制器index
函数,因此它将正常工作
$route['project/(:any)'] = 'project/method_name/$1'
如果这样调用将搜索project
控制器的method_name
函数,则应传递parameter
。 因为您在路线中添加了(:any)
如果在路由中使用(:any)
或(:num)
,则应在函数中捕获参数。
例。
$route['project/(:any)'] = 'project/method_name/$1'
function method_name($param1){
//your code
}
$route['project/(:any)/(:any)'] = 'project/method_name/$1/$2'
function method_name($param1, $param2){
//your code
}
您可以简单地在路由中使用(.*)
来获取无限的参数。 并且您不需要捕获函数中的参数。 检查下面。
$route['default_controller'] = 'home';
$route['404_override'] = 'home';
$route['translate_uri_dashes'] = FALSE;
$route['(.*)'] = "home";
$route['project'] = "project";
$route['project/(.*)'] = 'project';
使用$this->uri->segment()
捕获函数中的无限参数
class Home extends CI_Controller {
function index(){
$param1 = $this->uri->segment(1);
$param2 = $this->uri->segment(2);
$param3 = $this->uri->segment(3);
}
}
class Project extends CI_Controller {
function index(){
$param1 = $this->uri->segment(1);
$param2 = $this->uri->segment(2);
$param3 = $this->uri->segment(3);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.