博客列表 >9.【TP6学习笔记】Route路由的使用配置详解

9.【TP6学习笔记】Route路由的使用配置详解

 一纸荒凉* Armani
 一纸荒凉* Armani原创
2021年05月29日 15:22:083999浏览

路由Route

  • 要使用路由,必须引入 use think\facade\Route;

  • route\app.php路由文件

https://www.kancloud.cn/manual/thinkphp6_0/1037494

1、路由方法

Route::rule('路由表达式', '路由地址', '请求类型');

2、配置路由

use think\facade\Route;Route::rule('/', 'index');Route::rule('i', 'index/index');Route::rule('l', 'login/login');Route::get('think', function () {    return 'hello,ThinkPHP6!';});Route::get('hello/:name?', 'index/hello');Route::get('code', 'code/index');

3、参数传值

use think\facade\Route;Route::rule('l/:id', 'login/login');Route::rule('l/<id>', 'login/login');

4、获取参数

  • 使用 Request 基类、门面类、助手函数,获取参数

namespace app\controller;use app\BaseController;use think\facade\Request;class Login extends BaseController{    public function login()    {        print_r(request()->param());        print_r(Request::param());    }}

5、参数可选

use think\facade\Route;Route::rule('l/[:id]', 'login/login');Route::rule('l/<id?>', 'login/login');

6、完全匹配

use think\facade\Route;Route::rule('l/:id$', 'login/login');Route::rule('l/<id>$', 'login/login');
  • 开启:完全匹配

return [    // pathinfo分隔符    'pathinfo_depr'         => '/',    // URL伪静态后缀    'url_html_suffix'       => 'html',    // URL普通方式参数 用于自动生成    'url_common_param'      => true,    // 是否开启路由延迟解析    'url_lazy_route'        => false,    // 是否强制使用路由    'url_route_must'        => false,    // 合并路由规则    'route_rule_merge'      => false,    // 路由是否完全匹配    'route_complete_match'  => false,    'route_complete_match'  => true,    // 访问控制器层名称    'controller_layer'      => 'controller',    // 空控制器名    'empty_controller'      => 'Error',    // 是否使用控制器后缀    'controller_suffix'     => false,    // 默认的路由变量规则    'default_route_pattern' => '[\w\.]+',    // 是否开启请求缓存 true自动缓存 支持设置请求缓存规则    'request_cache_key'     => false,    // 请求缓存有效期    'request_cache_expire'  => null,    // 全局请求缓存排除规则    'request_cache_except'  => [],    // 默认控制器名    'default_controller'    => 'Index',    // 默认操作名    'default_action'        => 'index',    // 操作方法后缀    'action_suffix'         => '',    // 默认JSONP格式返回的处理方法    'default_jsonp_handler' => 'jsonpReturn',    // 默认JSONP处理方法    'var_jsonp_handler'     => 'callback',];use think\facade\Route;// 关闭完全匹配Route::rule('l/<id>', 'login/login')->completeMatch(false);

7、额外参数

  • 隐式传值,URL 中看不到,起安全防护作用。如冲突,append 方法优先

use think\facade\Route;Route::rule('l/<id>$', 'login/login')->append(['status' => 1, 'app_id' =>5]);

7、额外参数

  • 隐式传值,URL 中看不到,起安全防护作用。如冲突,append 方法优先

use think\facade\Route;Route::rule('l/<id>$', 'login/login')->append(['status' => 1, 'app_id' =>5]);

8、变量规则

  • 配置参数:default_route_pattern

  • 系统默认的变量规则设置是\w+,只会匹配字母、数字、中文和下划线字符,并不会匹配特殊符号以及其它字符

return [    // pathinfo分隔符    'pathinfo_depr'         => '/',    // URL伪静态后缀    'url_html_suffix'       => 'html',    // URL普通方式参数 用于自动生成    'url_common_param'      => true,    // 是否开启路由延迟解析    'url_lazy_route'        => false,    // 是否强制使用路由    'url_route_must'        => false,    // 合并路由规则    'route_rule_merge'      => false,    // 路由是否完全匹配    'route_complete_match'  => true,    // 访问控制器层名称    'controller_layer'      => 'controller',    // 空控制器名    'empty_controller'      => 'Error',    // 是否使用控制器后缀    'controller_suffix'     => false,    // 默认的路由变量规则    'default_route_pattern' => '[\w\.]+',    // 是否开启请求缓存 true自动缓存 支持设置请求缓存规则    'request_cache_key'     => false,    // 请求缓存有效期    'request_cache_expire'  => null,    // 全局请求缓存排除规则    'request_cache_except'  => [],    // 默认控制器名    'default_controller'    => 'Index',    // 默认操作名    'default_action'        => 'index',    // 操作方法后缀    'action_suffix'         => '',    // 默认JSONP格式返回的处理方法    'default_jsonp_handler' => 'jsonpReturn',    // 默认JSONP处理方法    'var_jsonp_handler'     => 'callback',];
  • 局部变量规则

use think\facade\Route;Route::rule('l/<id>$', 'login/login')->pattern(['id'=>'[0-9]+']);
  • 全局变量规则

use think\facade\Route;Route::rule('l/<id>$', 'login/login');Route::pattern([    'id' => '\d+',]);
  • 不需要开头添加 ^ 或者在最后添加 $,也不支持模式修饰符,系统会自动添加

9、分组路由

use think\facade\Route;Route::group('login', function () {    Route::rule('l/<id>', 'login/login');    Route::rule('r/<name>', 'login/reg');})->ext('html')->pattern(['id' => '\d+', 'name' => '\w+']);Route::group('/', function () {    Route::rule('l/<id>', 'login/login');    Route::rule('r/<name>', 'login/reg');});

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议