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

时间:2017-10-01 07:04:08

标签: php laravel laravel-5.5

在laravel docs中,我看到我可以将参数传递给路由中间件,但我有一个在每个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);
}

1 个答案:

答案 0 :(得分:0)

试试这个

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,
    ];