当前位置 : 主页 > 网络编程 > PHP >

Laravel — P54:路由组 — 中间件和控制器

来源:互联网 收集:自由互联 发布时间:2023-09-03
我想在​ ​web.php​ ​​文件中提及的最后一个主题是路由组。考虑到还没有触及​ ​api.php​ ​也经常使用的文件,还没有完全讨论完路由。 将中间件应用于组 要将中间件应用于特

我想在​​web.php​​​文件中提及的最后一个主题是路由组。考虑到还没有触及​​api.php​​也经常使用的文件,还没有完全讨论完路由。

将中间件应用于组

要将中间件应用于特定组,您只需使用该​​Route::middleware​​​方法,添加要应用的特定中间件,链接到一个​​group​​方法并传递一个匿名函数,其中包含应该应用中间件的各种路由。

在上一篇文章中看到了将中间件应用于组的示例。

Route::middleware(['throttle:web'])->group(function () {
Route::get('/throttle-test-1', function() {
return "Throttle Test 1";
});

Route::get('/throttle-test-2', function() {
return "Throttle Test 2";
});
});

如果想将额外的应用​​middleware​​​到组中,只需将额外的项目添加到​​middleware​​​数组中。例如,假设​​​auth​​也想追加。

Route :: middleware ([ 'throttle:web' , 'auth' ])-> group ( function ( ) { 
Route :: get ( '/throttle-test-3' , function ( ) {
return "Throttle Test 3" ;
});

Route :: get ( '/throttle-test-4' , function ( ) {
return "Throttle Test 4" ;
});
});

如果现在访问任何一条路由,都会收到错误消息,因为还没有实现身份验证。但是,确实看到中间件正在运行。它正在寻找​​login​​​中的路线​​app/Http/Middleware/Authenticate.php​​。

  Laravel — P54:路由组 — 中间件和控制器_中间件

中间件是按顺序执行的,也就是说对于​​[‘throttle:web’, ‘auth’]​​​,​​throttle:web​​​中间件会先执行,然后是​​auth​​。

控制器

您可能还记得汽车项目中的以下示例:

Route::prefix('/personalcars')->group(function() {
Route::get('/', [PersonalCarController::class, 'index']);
Route::get('/create', [PersonalCarController::class, 'create']);
Route::post('/', [PersonalCarController::class, 'store']);
Route::get('/{id}', [PersonalCarController::class, 'show']);
Route::get('/{id}/edit', [PersonalCarController::class, 'edit']);
Route::put('/{id}', [PersonalCarController::class, 'update']);
Route::delete('/{id}', [PersonalCarController::class, 'destroy']);
});

对于每条路由,了​​PersonalCarController::class​​​. 这似乎是一大堆重复。可以从那里抽出​​PersonalCarController​​课程并将其应用于整个小组。

Route::controller(PersonalCarController::class)->group(function () {
Route::get('/', 'index');
Route::get('/create', 'create');
Route::post('/', 'store');
Route::get('/{id}', 'show');
Route::get('/{id}/edit', 'edit');
Route::put('/{id}', 'update');
Route::delete('/{id}', 'destroy');
});

这看起来干净多了。在这种情况下,如果我们需要修改控制器名称,我们只需在一个地方进行即可。

这就是路线。接下来我们将进入一些额外的 Laravel 概念。我们肯定会很快重新访问中间件。

上一篇:Laravel — P53:速率限制
下一篇:没有了
网友评论