在Laravel中共享控制器中的变量

8 浏览
0 Comments

在Laravel中共享控制器中的变量

我正在从会话中获取user_id,并在整个控制器中多次使用它。所以我正在寻找获取该变量的方法。\n我已经设置好了获取它的一切(就我理解的方式),但是该变量返回的是null。\n我的控制器如下所示:\n

user_id = $user_id;
    }
    public function log_watched(Request $request)
    {
        dd($this->user_id);
        // 检查视频是否被观看过....
        $video_watched = VideoLog::where('user_id', $this->user_id);
    }
}

\n这是会话的问题吗?\n我应该如何获取它?

0
0 Comments

在Laravel中,控制器的构造方法先于启动会话的中间件运行,导致共享变量的问题。为了解决这个问题,可以在控制器的构造方法中使用middleware方法来设置共享变量。具体代码如下:

public function __construct()
{
    $this->middleware(function ($request, $next) {
        $this->user_id = session('id');
        return $next($request);
    });
}

通过这种方式,可以在控制器中设置user_id共享变量。希望对你有帮助!感谢Ross的帮助,解决得很好。很高兴能帮到你 🙂

0