是否可以将参数传递给 laravel 中的全局中间件

Is it possible to pass parameter to a global middleware in laravel

在 laravel 文档中,我看到我可以将参数传递给路由中间件,但我有一个在每个 http 请求上运行的全局中间件。我需要将一个变量传递给这个全局中间件。有可能吗?或者我必须使用路由中间件并在每条路由上显式定义中间件?

这是我的简单测试代码

Route::get('{lang}/product', function($lang){
  return view('langtest');
});

我想将 $lang 传递给我的全局中间件。

 public function handle($request, Closure $next)
{

   /*set the app locale*/
   \Log::info($request);     

    return $next($request);
}

试试这个

Route::get('{lang}/product', function(){
  return view('langtest');
})->middleware('lang.lang-1');

在你的中间件中

 public function handle($request, Closure $next,$lang)
{
    dd($lang);  
    return $next($request);
}

不要忘记将中间件定义到内核中

protected $routeMiddleware = [

        'lang' => \App\Http\Middleware\YourMiddlewareName::class,
    ];