Route::resources([
'brands' => 'BrandController',
'categories' => 'CategoryController',
'products' => 'ProductController'
]);
大家好,我找了一段时间,找不到是否可以在上述资源中添加中间件。
有人知道是否有办法吗?
提前谢谢!
答案 0 :(得分:1)
完成此任务的方法很少。
对路由进行分组。基本上,您将必须通过特定中间件传递的资源路由进行分组。看下面的例子。所有路由都被分组并通过auth中间件传递。
Route::group(['middleware' => 'auth'], function() {
Route::resource('brand', 'BrandController');
Route::resource('category', 'CategoryController');
Route::resource('product', 'productController');
});
控制器上的中间件:上面的代码将强制所有功能都通过中间件,但是,如果要将中间件强制为控制器上的特定功能,则应考虑将中间件放入在控制器的构造上。这是一个例子。
public function __construct()
{
$this->middleware('auth', ['except' => ['index','show']]);
}
如果执行此操作,则无需在路由中定义中间件
在资源中链接中间件本身会路由,这是一个示例
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');