【问题标题】:laravel why the session returns null?laravel 为什么会话返回null?
【发布时间】:2021-09-29 00:30:18
【问题描述】:
Route::get("test", function (){
    $result = \Illuminate\Support\Facades\Session::get("filter_values");

    \Illuminate\Support\Facades\Session::forget("filter_values");
    \Illuminate\Support\Facades\Session::put('filter_values', "abcdef");

    dd("result: ", $result);
});

为什么刷新页面时会话返回null?

【问题讨论】:

  • 运行dd() 通常会阻止将事物设置为会话,因为它会终止所有后续执行,包括持久化到会话处理程序的逻辑。改用\Log::info(session()->get('filter_values')) 并检查storage/logs/laravel.log 文件中的'abcdef'
  • @Tim Lewis 同样的结果返回 null
  • 当然返回null;如果您关注我的评论,则删除了 dd() 函数。您是否按照我的指示检查了您的日志?你的代码对我来说很好:i.stack.imgur.com/0nTdx.png, i.stack.imgur.com/42UUs.png
  • 如果在 put() 方法之后使用 get() 方法,它也可以与 dd() 函数一起使用。如果你看上面的例子,我在 put() 之后使用了一个变量) 方法
  • 如果您先执行$result = session()->get("filter_values");,然后执行Log::info($result),它仍然有效,但仅在第一次重新加载之后。 在初次访问时,即在运行session()->put() 之前,它记录'' 空白。所有后续刷新记录'abcdef',因此仍按预期工作。 i.stack.imgur.com/x7x8P.png, i.stack.imgur.com/Uq8Xg.png

标签: laravel session


【解决方案1】:
\Illuminate\Support\Facades\Session::forget("filter_values");
\Illuminate\Support\Facades\Session::put('filter_values', "abcdef");
$result = \Illuminate\Support\Facades\Session::get("filter_values");
dd($result);

您在开始时声明一个带有空白会话的变量,然后为会话分配值。

改变之后。你必须运行命令来清除缓存。

php artisan route:cache

【讨论】:

  • 那么,为什么刷新页面时返回null
  • 因为当你通过获取会话来定义结果变量时。会话没有价值。
  • 它第一次返回null,我同意这一点。但后来我想知道它是如何返回 null 的。会话中有值吗?
  • 无意冒犯,但你必须学习那个伙伴。我不会去教你它是如何工作的。
猜你喜欢
  • 1970-01-01
  • 2019-06-08
  • 2017-07-03
  • 2017-01-12
  • 2021-08-12
  • 2013-08-09
  • 2013-06-05
  • 2014-05-23
  • 2011-01-23
相关资源
最近更新 更多