laravel __construct 中的中间件
laravel middleware within __construct
我正在使用 https://github.com/appstract/laravel-multisite,它工作正常。
在我的控制器方法中,我可以 var_dump current_site()
并显示正确的信息。
我的问题是在我的控制器 __construct
方法中 current_site
函数 returns 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');
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
希望对您有所帮助!
我正在使用 https://github.com/appstract/laravel-multisite,它工作正常。
在我的控制器方法中,我可以 var_dump current_site()
并显示正确的信息。
我的问题是在我的控制器 __construct
方法中 current_site
函数 returns 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');
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
希望对您有所帮助!