如何在__construct中访问会话? [英] How to access session in __construct?

查看:101
本文介绍了如何在__construct中访问会话?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Laravel 5.3.4中,我无法在构造中访问会话变量.有什么办法吗?这是我的代码:

In Laravel 5.3.4 I can't access session variables in construct. Is there any way do to this? Here is my code:

    // 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);
        }
    }

P.S.在每个页面加载之前,我需要为所有控制器和视图从数据库加载翻译.

P.S. I need to load translations from database, before every page load, for all controllers and views.

推荐答案

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

In Laravel 5.3, you can't access the session or authenticated user in your controller's constructor because the middleware has not run yet.

在您的控制器文件中

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

这篇关于如何在__construct中访问会话?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆