路由:就是用户访问提前规定的控制器和方法,进行业务处理
tp默认提供了两种路由规则
1.pathinfo模式
2.自定义路由规则模式[推荐]
tp5.1的路由定义更加对象化,并且默认开启路由(不能关闭),如果一个url没有定义路由,则默认采用pathinfo模式访问
路由的相关配置解释
// 是否强制使用路由
'url_route_must' => false,
注:将开启强制使用路由,这种方式下面必须严格给每一个访问地址定义路由规则(包括首页),否则将抛出异常
开发时两种路由模式尽量只使用一种,当然你可以选择混合模式
// 路由是否完全匹配
'route_complete_match' => false,
注:如果是自定义路由,那么设置为true
// 是否开启路由缓存
'route_check_cache' => false,
注:如果路由定义中,有某个路由规则的路由地址使用了闭包的方式,那么路由缓存将会失效。
定义路由
Route::请求方式('路由表达式',匿名函数);
Route::请求方式('路由表达式','[@]模块名/控制器名/方法名'); # 后讲到控制器时使用
注:给控制器方法设置好了请求的路由规则后,原来的pathinfo请求则失效,
请求就会报异常,只能通过自定义路由规则来请求
查看已经定义的路由
php think route:list
请求类型
Route::get('new/:id','News/read'); // 定义GET请求路由规则 查询
Route::post('new/:id','News/update'); // 定义POST请求路由规则 添加
Route::put('new/:id','News/update'); // 定义PUT请求路由规则 修改
Route::delete('new/:id','News/delete'); // 定义DELETE请求路由规则 删除
Route::any('new/:id','News/read'); // 所有请求都支持的路由规则 框架提供 不推荐
路由参数
# 必填参数
Route::请求方式('路由表达式/:参数',匿名函数);
# 可选参数
Route::请求方式('路由表达式/[:参数]',匿名函数);
路由分组
Route::group('admin', function () {
Route::get('login/:id', function ($id = 0){
return '这是登录模块'.$id;
});
Route::post('users/:id', function ($id = 0){
return '这是用户模块';
});
Route::delete('admins/:id', function (){
return '这是管理员模块';
});
})->pattern(['id' => '\d+']);