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

我正在尝试使用AppServiceProvider类与所有视图共享会话值.

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

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

在Laravel中,会话在由此类处理的中间件中初始化:
\Illuminate\Session\Middleware\StartSession::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中间件之后执行

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


laravel的dd函数不生效怎么办
看不懂laravel文档咋办
安装laravel框架出现command怎么办
Laravel开发API怎么使用事务
laravel怎么构建复杂查询条件
laravel如何实现防止被下载
为什么laravel比yii火
一些常见的Laravel定时任务不运行的问题
laravel用路由有什么好处
composer无法安装laravel怎么办
laravel现在还用吗
laravel怎么替换主键id
laravel的appurl有什么用
如何修改Laravel的报错输出形式
laravel怎么避免foreach查表
laravel怎样操作数据库
laravel怎么截取字符串
laravel 是国内的吗
laravel怎么设置请求头
浅析Laravel社区Redis组件报错的问题和解决方法