注册路由
1、路由简介
什么是路由:
将用户的请求按照事先规划的方案提交给指定的控制器或者功能函数来进行处理.
2、路由模式
见手册--路由--路由模式:https://www.kancloud.cn/manual/thinkphp5/118019
ThinkPHP5.0的路由比较灵活,并且不需要强制定义,可以总结归纳为如下三种方式:
普通模式、混合模式、强制模式。
强制模式下,系统中的每次请求都不是随意的,必须要做相关的设置,该请求才被允许,这样做的好处是系统相对比较安全、路由非常规范、有利于整体协调配置等。
配置方式:开启路由模式(application/config.php)
普通模式
'url_route_on' => false, //开启路由设置
'url_route_must'=> false, //必须使用路由
混合模式
'url_route_on' => true, //开启路由设置
'url_route_must'=> false, //必须使用路由
强制模式
'url_route_on' => true, //开启路由设置
'url_route_must'=> true, //必须使用路由
3、路由定义(路由注册)
设置路由(application/route.php)
格式:
Route::rule('路由表达式','路由地址','请求类型','路由参数(数组)','变量规则(数组)');
//简化格式:
Route::get('路由表达式','路由地址','路由参数(数组)','变量规则(数组)');
Route::post('路由表达式','路由地址','路由参数(数组)','变量规则(数组)');
Route::any('路由表达式','路由地址','路由参数(数组)','变量规则(数组)');
参数说明:
路由表达式:请求地址(比如在浏览器地址栏输入的地址)
路由地址:表示路由表达式最终需要路由到的地址(比如模块/控制器/方法),有多种定义方式,常用的是”模块/控制器/操作?额外参数1=值1&额外参数2=值2”形式
请求类型:GET、POST ,大写
路由参数:
method:请求类型
ext:允许的后缀
deny_ext:禁止的访问后缀
domain:允许什么样的域名访问有效
https:检测是否是https请求
before_behavior:行为发生前,进行路由检查
after_behavior:行为发生后,要执行的动作
...
详情参考:手册--路由--路由参数
变量规则:检查传递的变量是否符合某个(正则)规则,规则可以通过正则定义
例如:
Route::rule('login','home/login/login','GET',['ext'=>'html']);
访问:http://servername/index.php/login.html
路由到:http://servername/index.php/home/login/login//路由变量
Route::rule('login/:id','home/login/login','GET',['ext'=>'html'],['id'=>'\d+']);
访问:http://servername/index.php/login/101.html
路由到:http://servername/index.php/home/login/login/id/101Route::rule('login/:id/:name','home/login/login','GET',['ext'=>'html'],['id'=>'\d+','name'=>'[a-zA-Z]+']);
访问:http://servername/index.php/login/101/tom.html
路由到:http://servername/index.php/home/login/login/id/101/name/tom
4、路由分组
路由分组功能允许把相同前缀的路由定义合并分组,这样可以提高路由匹配的效率,不必每次都去遍历完整的路由规则。
路由分组:
Route::group(‘分组名称’, function(){
//单个路由的定义
});
使用示例:
5、组合变量
如果路由中的变量,不想使用 /:变量名 的方式定义,可以使用 <变量名> 组合变量。