加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – Laravel – 服务提供者中的Session变量为null

发布时间:2020-12-14 19:55:58 所属栏目:大数据 来源:网络整理
导读:我正在尝试使用AppServiceProvider类与所有视图共享会话值. 在boot()函数中我说:view() – share(‘key’,Session :: get(‘key’)); 但是,该值为null.可能是什么问题?在Controller我设置它,它工作正常.即使在删除Session :: put()行之后,该值仍然在会话中
我正在尝试使用AppServiceProvider类与所有视图共享会话值.

在boot()函数中我说:view() – > share(‘key’,Session :: get(‘key’));

但是,该值为null.可能是什么问题?在Controller我设置它,它工作正常.即使在删除Session :: put()行之后,该值仍然在会话中(显然).

在Laravel中,会话在由此类处理的中间件中初始化:
IlluminateSessionMiddlewareStartSession::class

引导服务提供程序时,此中间件尚未执行,因为所有中间件都在服务提供程序引导阶段之后执行

因此,您可以创建中间件并从那里共享会话变量,而不是从服务提供者共享变量,或者您可以在服务提供者中使用带有回调的视图编辑器:

public function boot()
{
    view()->composer('*',function ($view) 
    {
        //this code will be executed when the view is composed,so session will be available
        $view->with('key',Session::get('key') );    
    });  
}

这将起作用,因为在组成视图之前将调用回调,当中间件已经被执行时,因此会话将是可用的

一般来说,要注意中间件的执行顺序:如果你想从中间件访问会话,那应该在Laravel的StartSession :: class中间件之后执行

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读