Laravel - 服务提供者中的会话变量为空

2024-03-05

我正在尝试使用以下命令与所有视图共享会话值AppServiceProvider class.

In the boot()函数我说:view()->share('key', Session::get('key'));

但是,值是null。可能是什么问题?在控制器中我设置它,它工作正常。即使删除后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中间件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel - 服务提供者中的会话变量为空 的相关文章

随机推荐

  • 使用 .htaccess 更改 url 中的目录

    我正在尝试更改地址栏中显示的网址mysite com blog wedding hair to mysite com services wedding hair using htaccess 使用以下答案 https stackoverfl
  • 带负值和高度的 CSS 相对定位

    我试图对 DIV 元素进行负向定位 在示例中是 content 但我的问题是 div 的容器 wrapper2 获得了太多高度 实际上是 content 给出的高度 但正如我 我将内容向上移动 我想相应地降低 wrapper2 的高度 在这
  • 删除 MVC 中的浏览器自动完成功能

    我目前正在尝试删除用户浏览器完成的表单自动完成功能 这可能会导致一些关键行为 因为它填充了密码字段 我已经将自动完成属性添加到我的所有文本框字段中 但是当我尝试使用 Firefox 时 它仍然会将我当前的登录信息加载到字段中 有谁知道如何解
  • JScrollPane 未添加到 JTextArea

    我看到了几个类似这个问题的问题 但我无法解决这个问题 我无法得到JScrollPane可见于JTextArea 谁能指出我哪里做错了 谢谢 package experiement import java awt Dimension impo
  • openlayers 策略:ol.loadingstrategy.bbox 不适用于 wfs 功能

    我尝试使用此代码使用 openlayers 4 最大 1000 可视化 wfs 中的地块 但是视图地图的每次移动或缩放时范围不会改变 或者新功能不会加载到图层中 var parcellaireSource new ol source Vec
  • MinGW GCC:“未知转换类型字符'h'”(snprintf)

    好的 我在 Windows 7 上使用 MinGW GCC 4 6 2 编译 C 文件时遇到了一个奇怪的问题 该文件包含以下 C 代码 include
  • 无法访问在 docker 内创建的 docker-compose 容器

    我有一个docker compose yml在端口上启动简单 HTTP 回显服务的文件8800 version 2 services echo server image luisbebop echo server container nam
  • CSS 比较运算符

    我需要定位占其父 div 80 以上的 div 作为进度条 考虑到我们可以瞄准specificCSS 宽度 data width 80 我们如何瞄准比较 这做到了not在 Firefox 或 Chrome 中工作 data width gt
  • Powershell / Perl:将多个 CSV 文件合并为一个?

    我有以下 CSV 文件 我想将它们合并到一个 CSV 中 01 csv apples 48 12 7 pear 17 16 2 orange 22 6 1 02 csv apples 51 8 6 grape 87 42 12 pear 2
  • 如何在Windows系统上安装geckodriver

    我正在尝试安装 webdriver 为了打开 Firefox 我需要安装 geckodriver 并将其安装在正确的路径中 首先 安装 geckodriver 的下载链接仅允许您安装非可执行文件 那么有没有办法让它成为可执行文件呢 其次 我
  • 无法探测视频 laravel ffmpeg

    我一直在关注这个教程https github com pascalbaljetmedia laravel ffmpeg https github com pascalbaljetmedia laravel ffmpeg我正在尝试调整我的视频
  • 具有相同名称的多个隐藏输入,始终检索最后一个输入[重复]

    这个问题在这里已经有答案了 foreach graphEdge as graphNode echo div class form check mb 3 div
  • 使用 Camel 的表达式语言获取并格式化昨天的日期

    我在 Camel 的路径中使用日期 fileName date now dd MM yyyy 但我现在需要的是 1天 那可能吗 嗯 不直接 简单语言中的 date 对象只能获取当前时间 或者您放置在标头中的某个时间值 您可以在 java 或
  • boost::thread 并创建它们的池!

    boost thread 类有一个默认构造函数 它给出 Not a thread 那么什么是 boost thread t1 适合什么 我可以给它一个稍后在代码中执行的函数吗 另一个问题 我正在尝试编写一个具有分阶段架构 SEDA 的小服务
  • Crossfilter过滤器不过滤(dc.js)

    我试图在交叉过滤器中使用过滤器 但是不行 这是 JSBin http jsbin com liwiru 8 edit 这是最相关的代码 var userDimension data dimension function d return d
  • Android 中用户不活动?

    我想查看我的 Android 应用程序中的用户不活动情况 如果用户在 1 分钟内没有执行任何活动 那么该应用程序应该离开屏幕 这意味着它应该显示一个对话框 要求输入密码 之前存储在共享首选项中 如果密码与活动应该再次开始 有人可以帮我解决这
  • 如何在响应和请求中添加新方法

    我想在node js的响应和请求中添加新方法 我怎样才能更有效地做到这一点 我不明白这是如何在express js中完成的 作为 JavaScript 有很多方法可以做到这一点 在我看来 对于express来说最合理的模式是将函数添加到早期
  • Flask-Login 不适用于同一域中的两个应用程序

    我一直在使用 Flask Login
  • 反思:如何获得泛型方法? [复制]

    这个问题在这里已经有答案了 可能的重复 如何使用反射调用泛型方法 https stackoverflow com questions 232535 how to use reflection to call generic method 通
  • Laravel - 服务提供者中的会话变量为空

    我正在尝试使用以下命令与所有视图共享会话值AppServiceProvider class In the boot 函数我说 view gt share key Session get key 但是 值是null 可能是什么问题 在控制器中