要使用路由,必须引入 use think\facade\Route;
route\app.php路由文件
https://www.kancloud.cn/manual/thinkphp6_0/1037494
Route::rule('路由表达式', '路由地址', '请求类型');
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');
use think\facade\Route;Route::rule('l/:id', 'login/login');Route::rule('l/<id>', 'login/login');
使用 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()); }}
use think\facade\Route;Route::rule('l/[:id]', 'login/login');Route::rule('l/<id?>', 'login/login');
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);
隐式传值,URL
中看不到,起安全防护作用。如冲突,append
方法优先
use think\facade\Route;Route::rule('l/<id>$', 'login/login')->append(['status' => 1, 'app_id' =>5]);
隐式传值,URL
中看不到,起安全防护作用。如冲突,append
方法优先
use think\facade\Route;Route::rule('l/<id>$', 'login/login')->append(['status' => 1, 'app_id' =>5]);
配置参数: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+',]);
不需要开头添加 ^
或者在最后添加 $
,也不支持模式修饰符,系统会自动添加
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');});