# Route路由 ## 路由配置 ```php // routes/web.php # 接收get请求 http://127.0.0.1:8000/test Route::get('/test', function () { return 'Hello Laravel'; }); # any接收任何请求方式 Route::any('/test', function () { return 'Hello Laravel'; }); # 指定提交方式 Route::match(['get', 'post'], '/test', function () { return 'Hello Laravel'; }); # 接收参数 http://127.0.0.1:8000/test/5 Route::get('/test/{id}', function ($id) { return $id; }); ``` ## 控制器 ```bash php8 artisan make:controller TaskController ``` 自动生成的模板代码 ```php where('id', '[0-9]+'); // 多个参数 Route::get('/user/{id}/{name}', function ($id, $name) { // })->where([ 'id' => '[0-9]+', 'name' => '[a-z]+' ]); ``` 全局约束 ```php // App\Providers\RouteServiceProvider where('id', '.*'); ``` ## 重定向路由 ```php // 状态码默认302,临时重定向 Route::redirect('/index', '/task'); // 301 永久重定向 Route::redirect('/index', '/task', 301); // 等价于 永久重定向 Route::permanentRedirect('/index', '/task'); ``` ## 视图路由 视图模板 ```html {{-- resources/views/task.blade.php --}} Document {{-- 变量 --}} {{$name}} ``` > !+ tab 可快速创建HTML模板 ```php // http://127.0.0.1:8000/task // 方式一: Route::view('/task', 'task', [ 'name'=> 'Tom' ]); // 方式二:使用助手函数返回view Route::get('/task', function () { return view('task', [ 'name' => 'Tom' ]); }); // 方式三: Route::get('/task', [TaskController::class, 'index']); ``` Controller返回view ```php 'Tom' ]); } } ``` ## 路由命名 ```php // 指定路由的名称 Route::get('/task', function(){ return 'task'; })->name('index.task'); // 使用助手函数生成URL(URL是URI的子集) Route::get('/url', function(){ return route('index.task'); // http://127.0.0.1:8000/task }); // 传参 Route::get('/url', function(){ return route('index.task', ['name'=> 'Tom']); // http://127.0.0.1:8000/task?name=Tom }); // 路由跳转 Route::get('/url', function(){ return redirect()->route('index.task', ['name'=> 'Tom']); // 跳转地址:http://127.0.0.1:8000/task?name=Tom }); // 生成相对地址 Route::get('/url', function(){ return route('index.task', ['name'=> 'Tom'], false); // /task?name=Tom }); ``` ## 路由分组 ```php // 添加路由前缀 Route::group(['prefix' => 'api'], function () { // http://127.0.0.1:8000/api/index Route::get('/index', function () { return 'index'; }); // http://127.0.0.1:8000/api/task Route::get('/task', function () { return 'task'; }); }); // 等价于(推荐) Route::prefix('api')->group(function () { // http://127.0.0.1:8000/api/index Route::get('/index', function () { return 'index'; }); // http://127.0.0.1:8000/api/task Route::get('/task', function () { return 'task'; }); }); // 路由中间件 Route::middleware('middleware')->group(function () {}); // 子域路由 Route::domain('127.0.0.1')->group(function () {}); // 命名空间 Route::namespace('Admin')->group(function () {}); // 路由名称前缀 Route::name('admin.')->group(function () { Route::get('/task', function () { return 'task'; })->name('task'); // admin.task }); ``` ## 单动作控制器 ```bash php artisan make:controller OneController --invokable ``` ```php name('index.task'); ``` ### 当前路由指向的方法 ```php