当前位置:   article > 正文

thinkphp5.1使用Route路由_tp5.1 route

tp5.1 route

一、开启路由

thinkphp的路由一般默认都是开启的,如果没有开启,可以在config.php里添加如下配置:

  1. 'url_route_on' => true, //开启路由
  2. 'url_route_must' => true,//表示强制开启路由,必须定义路由才能访问。一般都是使用false,即混合模式,不用路由也可以访问

二、添加路由规则

1、首先在application\index\controller\Index.php添加一个hello的方法,如下:

  1. <?php
  2. namespace app\index\controller;
  3. class Index
  4. {
  5. public function index()
  6. {
  7. return view();
  8. }
  9. public function hello($name = 'ThinkPHP5')
  10. {
  11. return 'hello,' . $name;
  12. }
  13. }

2、在route/route.php或者application\route.php添加路由规则,如下:

  1. <?php
  2. /*--------------------------------------------
  3. * 添加路由规则:
  4. * 1、路由到index控制器的hello操作方法
  5. * 2、浏览器访问:http://域名/hello/参数
  6. * -------------------------------------------*/
  7. //方式一(在:name外面添加[],表示路由参数name为可选):
  8. Route::get('hello/[:name]', 'index/hello');
  9. //方式二:
  10. return [
  11. 'hello/[:name]' => 'index/hello',
  12. ];

 3、定义路由的请求类型和后缀

  1. return [
  2. // 定义路由的请求类型和后缀
  3. 'hello/[:name]' => ['index/hello', ['method' => 'get', 'ext' => 'do']],
  4. ];

定义后缀后,必须添加后缀才能访问,如下:

 

三、添加路由别名

方式一:

动态方法:Route::alias('规则名称','模块/控制器',[路由参数]);

  1. /*--------------------------------------------
  2. * 添加路由别名:
  3. * 1、别名路由到 分组/控制器名
  4. * 2、浏览器访问:http://域名/别名
  5. * -------------------------------------------*/
  6. Route::alias('index','index/Index');
  7. Route::alias('login','index/Login');
  8. Route::alias('main','index/Main');
  9. /*--------------------------------------------

方式二:

动态数组:return[

      '__alias__'=>['规则名称','模块/控制器',[路由参数]]

];

  1. return [
  2. //路由别名
  3. '__alias__' => [
  4. 'index' => 'index/Index',
  5. 'login'=> 'index/Login',
  6. 'main'=> 'index/Main',
  7. ],
  8. ];

四、添加路由分组

1、在application\index\controller\Index.php添加如下几个方法,如下:

  1. <?php
  2. namespace app\index\controller;
  3. class Index
  4. {
  5. public function get($id)
  6. {
  7. return '获取id=' . $id . '的内容';
  8. }
  9. public function read($name)
  10. {
  11. return '查看name=' . $name . '的内容';
  12. }
  13. public function find($year, $month)
  14. {
  15. return '查看' . $year . '年' . $month . '月的内容';
  16. }
  17. }

2、在route/route.php或者application\route.php添加路由分组规则,如下:

  1. <?php
  2. return [
  3. //路由分组(按顺序匹配)
  4. '[index]' => [
  5. ':year/:month' => ['index/find', ['method' => 'get'], ['year' => '\d{4}', 'month' => '\d{2}']],
  6. ':id' => ['index/get', ['method' => 'get'], ['id' => '\d+']],
  7. ':name' => ['index/read', ['method' => 'get'], ['name' => '\w+']],
  8. ],
  9. ];

3、浏览器访问,效果如下图:

五、thinkphp访问路由报错“No input file specified.”的解决方法:

修改伪静态配置文件.htaccess,打开htaccess文件,在index.php之后添加?(问号),如下:

  1. <IfModule mod_rewrite.c>
  2. Options +FollowSymlinks -Multiviews
  3. RewriteEngine On
  4. RewriteCond $1 !^(index.php|images|robots.txt)
  5. RewriteCond %{REQUEST_FILENAME} !-d
  6. RewriteCond %{REQUEST_FILENAME} !-f
  7. RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
  8. </IfModule>

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/351320
推荐阅读