在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);
}
答案 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,
];