将中间件应用于该资源组

时间:2018-07-23 01:54:54

标签: php laravel

  Route::resources([
     'brands' => 'BrandController',
     'categories' => 'CategoryController',
     'products' => 'ProductController'
  ]);

大家好,我找了一段时间,找不到是否可以在上述资源中添加中间件。

有人知道是否有办法吗?

提前谢谢!

3 个答案:

答案 0 :(得分:1)

完成此任务的方法很少。

  1. 对路由进行分组。基本上,您将必须通过特定中间件传递的资源路由进行分组。看下面的例子。所有路由都被分组并通过auth中间件传递。

    Route::group(['middleware' => 'auth'], function() {
          Route::resource('brand', 'BrandController');
          Route::resource('category', 'CategoryController');
          Route::resource('product', 'productController');
    
    
    });
    
  2. 控制器上的中间件:上面的代码将强制所有功能都通过中间件,但是,如果要将中间件强制为控制器上的特定功能,则应考虑将中间件放入在控制器的构造上。这是一个例子。

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

如果执行此操作,则无需在路由中定义中间件

  1. 在资源中链接中间件本身会路由,这是一个示例

    Route::resource('brand', 'BrandController')->middleware(['auth']);
    

我的选择是方法一,因为它将相似的路线集中在一处,使代码有点井井有条。

祝你好运!

答案 1 :(得分:1)

Route::middleware(...)->group(function () {
    Route::resources([
        'brands' => 'BrandController',
        'categories' => 'CategoryController',
        'products' => 'ProductController'
    ]);
});

使用路由组就足够了。

答案 2 :(得分:0)

您可以像这样简单地做到

将此添加到路由资源

->Middleware('your Middleware  name');