Blogger Information
Blog 128
fans 9
comment 5
visits 241144
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
9.【TP6学习笔记】Route路由的使用配置详解
 一纸荒凉* Armani
Original
4000 people have browsed it

路由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');});

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post