codeigniter如何为控制器类和方法设置路由?

Ric*_*ick 2 php codeigniter

我是CI的新手,需要初学者的专家帮助.

这是我目前的设置:/ controllers /

  • home.php
  • report.php

/视图/

  • 家用/ index.php文件
  • 家用/ recent.php
  • 报告/ index.php文件
  • 报告/ generate.php

我试图产生的URI作为结果:

http:// localhost http:// localhost/report(将加载index.php) http:// localhost/report/generate(将在报表控制器中调用generate方法)

http:// localhost/recent/10(将在归属控制器中调用生成方法传递变量'10')

$route['default_controller'] = "home";
$route['404_override'] = '';
$route['/'] = 'home/index';
$route['recent/(:num)'] = 'home/recent/$1';
$route['report/(:any)'] = 'report/$1';
Run Code Online (Sandbox Code Playgroud)

如何避免始终为类中创建的每个新方法修改routes文件?所以它将遵循:$ route [$ controller/$ method/$ variable](非常适用于如何设置.net mvc路由).

任何帮助表示赞赏.

Sho*_*omz 10

您无需进一步修改.事实上,即使这条线也是多余的:

$route['report/(:any)'] = 'report/$1';
Run Code Online (Sandbox Code Playgroud)

这个也是多余的:

$route['/'] = 'home/index';
Run Code Online (Sandbox Code Playgroud)

因为默认的控制器设置为"家",默认的方法是永远 index.

了解CI如何使用URL:https://www.codeigniter.com/user_guide/general/urls.html

因此,/localhost/report/generate会寻找Report控制器,并加载其generate方法.这就是开箱即用的方式,无需路由.

这条路很好:

$route['recent/(:num)'] = 'home/recent/$1';
Run Code Online (Sandbox Code Playgroud)

如果将获取URL /localhost/recent/123并将加载Home,控制器,recent方法并将123作为第一个方法参数传递.