如何在 __construct 中访问会话?

Ged*_*nas 2 laravel

在 Laravel 5.3.4 中,我无法访问构造中的会话变量。有没有办法做到这一点?这是我的代码:

    // app/Http/Controllers/Controller.php
    class Controller extends BaseController {
        use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

        public function __construct() {
            $t = Translation::where('language_id', Session::get('language_id') )->get();
            View::share('t', $t);
        }
    }
Run Code Online (Sandbox Code Playgroud)

PS 我需要在每个页面加载之前从数据库加载翻译,用于所有控制器和视图。

Vik*_*ash 6

在 Laravel 5.3 中,您无法在控制器的构造函数中访问会话或经过身份验证的用户,因为中间件尚未运行。

在您的控制器文件中

public function __construct()
{
    $this->middleware(function ($request, $next) {
            $t = Translation::where('language_id',Session::get('language_id')->get();
            View::share('t', $t);Session::get('language_id');

           return $next($request);
     });
}
Run Code Online (Sandbox Code Playgroud)