繁体   English   中英

我有Codeigniter项目,我不知道写Route

[英]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/$1home/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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM