02.路由和控制器
goer ... 2022-01-08 大约 2 分钟
[toc]
# 路由
路由就是提供接受 HTTP 请求的路径,并和程序交互的功能;提供访问程序的 URL 地址
路由的定义文件在根目录 routes/web.php 中,可以看到 welcome 页面;
新建路由
Route::get('index',function(){
return 'hello lv';
});
1
2
3
4
5
2
3
4
5
在路由定义上,我们采用了::get()这个方法,它接受的就是 GET 提交;
::post()、::put()、::delete()是表单和 Ajax 的提交接受方式;
::any()表示不管你是哪种提交方式,我智能的全部接收响应;
::match()表示接收你指定的提交方式,用数组作为参数传递;
match(三个参数)
Route::match(['get','post'],'hello',function (){
return 'hello';
});
1
2
3
4
2
3
4
传递路由参数
// 路由传参 必须带有id --> 参数 为可读性 $id
Route::get('index/{id}',function ($id){
return 'hello lv'.$id;
});
1
2
3
4
2
3
4
# 控制器
MVC
模式中 C 代表控制器,用于接收 HTTP 请求,从而进行逻辑处理;
创建
//控制器目录 app\Http\Controllers
1. ide直接创建
2. php artisan make:controller TaskController
1
2
3
4
2
3
4
// 直接 app\Http\Controllers新建class文件
<?php
namespace App\Http\Controllers;
class TaskControllers extends Controller
{
public function index(){
return 'hello index';
}
public function test($id){
return 'id is :'.$id;
}
}
//设置路由就可以访问了
Route::get('task','TaskControllers@index');
// 参数id 在控制器的fun里面了
Route::get('task/test/{id}','TaskControllers@test');
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
路由参数:参数一:路由名称 参数二:控制器@方法名
# 路由参数
如动态传递{id} -- 参数约束
路由参数约束
// 限制路由参数 正则表达式 where()
Route::get('tesk/test/{id}','TaskControllers@test')
->where('id','[0-9]+'); //id必须为整数多个
// 多个参数限定 用数组
Route::get('task/test/{id}/{name}','TaskControllers@test')
->where(['id'=>'[0-9]+'],['name'=>'*']);
1
2
3
4
5
6
7
2
3
4
5
6
7
如果想让约束 id 只能是 0-9 之间作用域全局范围,可以在模型绑定器里设置
// 模型绑定器
app\Providers\RouteServiceProvider 的 boot()方法
public function boot()
{
//
Route::pattern('id','[0-9]+'); //这样就全局id都必须这个规则
parent::boot();
}
//id 已经被全局约束,在某个局部你想让它脱离约束
->where('id','.*'); // '.*' *任意规则
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 路由重定向
设置访问一个路由的 URI,跳转到另一个路由的 URI
// 路由跳转 redirect(当前路由,跳转路由, 状态码)
Route::redirect('task','task/test/10/blud');
Route::redirect('task','login',301); //设置状态码
// 一个方法,可以直接让路由跳转返回 301 状态码而不用设置 permanentRedirect 301
1
2
3
4
5
6
2
3
4
5
6