解释如何在构造函数 Laravel 5.3 中使用会话



根据Laravel文档https://laravel.com/docs/5.3/upgrade#5.3-session-in-constructors我无法再访问构造中的会话,因为中间件尚未加载,他们提供了一个我无法理解的示例

public function __construct()
{
    $this->middleware(function ($request, $next) {
        $this->projects = Auth::user()->projects;
        return $next($request);
    });
}

如何在该函数中访问我的会话?,解释就可以了

Laravel文档指出,您无法再在构造函数中访问中间件,因为它尚未加载。

通过使用特定的闭包,你实际上是在强制 php(和 Laravel)加载你在闭包中的任何逻辑作为中间件。看看Laravel提供的基本控制器类,看看你是否可以连接这些点。

从本质上讲,你正在破解框架。

话虽如此,这确实是一种糟糕的做法,您不应该在控制器的构造函数中调整会话。

将其放在将处理请求的控制器的__construct()函数中。

 public function __constrcut(){
    //changing language accordding to session
    $this->middleware(function($request,$next){
        app::setLocale(Session::get('locale'));
        return $next($request);
    });

此代码用于根据会话更改语言 我使用的版本 laravel 5.5 注意:您必须先调用 middelware,然后使用会话作为构造函数,看不到会话这对我有用

最新更新