博主信息
博文 128
粉丝 9
评论 5
访问量 294767
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
9.【TP6学习笔记】Route路由的使用配置详解
 一纸荒凉* Armani
原创
5079人浏览过

路由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举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学