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

时间:2015-02-02 22:43:48

标签: php codeigniter

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

以下是我目前的设置: 器/控制器/

  • 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(将调用home控制器中的generate方法传递变量'10')

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

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

感谢任何帮助。

1 个答案:

答案 0 :(得分:10)

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

$route['report/(:any)'] = 'report/$1';

这个也是多余的:

$route['/'] = 'home/index';

因为默认控制器设置为“home”,默认方法始终 index

了解CI如何处理网址:https://www.codeigniter.com/user_guide/general/urls.html

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

这条路很好:

$route['recent/(:num)'] = 'home/recent/$1';

如果将使用网址/localhost/recent/123并将加载Home,控制器,recent方法,并将123作为第一个方法参数传递。