【问题标题】:laravel middleware within __construct__construct 中的 laravel 中间件
【发布时间】:2017-12-11 12:35:36
【问题描述】:

我正在使用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');

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

    }

【问题讨论】:

    标签: laravel scope middleware laravel-middleware


    【解决方案1】:

    你可以试试这样的:

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

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

    希望这会有所帮助!

    【讨论】:

    • 这确实会转储当前数据...但是当我尝试 $this->currentSite = current_Site();该属性为空
    • @JimPhillips 尽管var_dump($this->currentSite) 是在中间件之后编写的,但它仍在中间件关闭之前运行。它不起作用的原因与您的帮助函数在将其放入中间件闭包之前不起作用的原因相同。
    • $this->currentSite 如果/当您尝试在您的控制器方法之一中使用它时,应该设置它
    • @JimPhillips 这是因为您将闭包传递给 middleware() 方法。这个闭包不会立即被调用,而是存储在一个数组中,然后与应用程序的其余中间件一起调用。
    • @AlauddinAhmed 我肯定会建议创建一个新问题,因为它听起来超出了这个问题的范围。
    猜你喜欢
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 2013-05-17
    • 2019-08-25
    • 2017-11-02
    • 1970-01-01
    • 2019-07-13
    相关资源
    最近更新 更多