__construct中的laravel中间件

时间:2017-07-07 09:11:57

标签: laravel scope middleware laravel-middleware

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

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

我的问题是,在我的控制器__construct方法中,current_site函数返回 null ,即multi_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');

我接下来应该做什么步骤?

修改

我已将代码更改为

 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");

    }

1 个答案:

答案 0 :(得分:0)

您可以尝试以下方式:

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

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

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

希望这有帮助!