【问题标题】:Is it possible to pass parameter to a global middleware in laravel是否可以将参数传递给laravel中的全局中间件
【发布时间】:2017-10-02 01:01:59
【问题描述】:

在 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);
}

【问题讨论】:

  • 你可以使用 $request->lang
  • 不,$request 是空的。
  • okay.then 我认为它不是一个全局中间件,因此请求不会通过该中间件
  • 看起来不错
  • @sadik.even 我在这里尝试。对我来说也返回空。让我检查一次

标签: php laravel laravel-5.5


【解决方案1】:

试试这个

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

【讨论】:

    猜你喜欢
    • 2019-12-16
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 2015-04-22
    • 2013-05-07
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多