Laravel 在资源路由控制器的特定路由上应用中间件

Laravel Apply middlware on specific route of resource route controller

我想在资源控制器的创建路由上应用中间件,但不知道如何设置中间件。通常我们可以这样添加中间件

Route::get('api/users/{user}', function (App\Models\User $user) {
    return $user->email;
})->middleware('name');

但是当我们有一个资源控制器时,我如何在资源控制器的单个路由上应用中间件。

Route::resource('front-pages','Admin\FrontPagesController');

创建一个__construct()函数

在FrontPagesController.php

public function __construct()
{
    $this->middleware('auth', ['except' => ['index','show']]);
}

ref link https://laravel.com/docs/8.x/controllers#controller-middleware


所有可能的功能

/**
 * Instantiate a new controller instance.
 *
 * @return void
 */
public function __construct()
{
    $this->middleware('auth');

    $this->middleware('log')->only('index');

    $this->middleware('subscribed')->except('store');
}

您可以使用

 Route::resource('front-pages','Admin\FrontPagesController')->only('fornt-page.whatever name');

你可以把它和中间件分组

Route::middleware('name')->resource('front-pages' , 'Admin\FrontPagesController');

参考laravel文档:https://laravel.com/docs/8.x/middleware#introduction