laravel __construct 中的中间件

laravel middleware within __construct

我正在使用 https://github.com/appstract/laravel-multisite,它工作正常。

在我的控制器方法中,我可以 var_dump current_site() 并显示正确的信息。

我的问题是在我的控制器 __construct 方法中 current_site 函数 returns nullmulti_site 对象没有' 尚未设置。

public function __construct()
{
    //this returns null
    var_dump(current_Site());
}


public function index()
{
    //this works
    var_dump(current_Site());
}

我假设构造函数在路由完成之前被调用,因此这就是问题所在,但我只想调用一次 current_site 函数并让控制器从一开始就知道正在使用哪个站点,所以所有方法等都会知道。

我认为这只是我缺乏知识,而不是代码问题...有任何指导吗?

我的路线组是这样的

'domain' => 'dealer1.'.config('multisite.host'),
'as' => 'dealer1.',
'middleware' => 'site:dealer1'

我知道这是在调用 __construct 之前未完成中间件的待办事项,但我应该通过执行

来调用它
  $this->middleware('CurrentSite');

w下一步应该做什么?

编辑

我已将代码更改为

 public function __construct()
    {



        $this->middleware(function ($request, $next) {
            //this dumps correctly
            var_dump(current_Site() );
               $this->currentSite = current_Site();
            return $next($request);
        });
        //this is null
       //var_dump($this->currentSite);
       //die("here");

    }

您可以尝试类似的方法:

public function __construct()
{
    $this->middleware(function ($request, $next) {
        var_dump(current_Site());

        return $next($request);
    });
}

https://laravel.com/docs/master/controllers#controller-middleware

希望对您有所帮助!