【问题标题】:Strange issue with Laravel's flash sessionLaravel 的 flash 会话的奇怪问题
【发布时间】:2015-05-25 17:33:34
【问题描述】:

我遇到了一个非常奇怪的问题,但找不到任何相关信息。我正在尝试一个非常简单的事情,如果条件不满足,使用 Laravel 中的 Flash 消息向用户显示消息。

基本上这是我正在使用的控制器代码:

        Session::flash('error', 'error message');
        return redirect()->back();

//      this didn't work either
//      return redirect()->action('Controller@method', $var)->with('error', ['error message']);

问题是,当我在视图中 var_dump 会话时它正在工作,但没有它就不行。这是视图:

{{ Session::get('error') }} // does not work
{{ dd(Session::get('error')) }} // works!

这是一个非常简单的事情,但我不知道为什么会出错。

周围有帮手吗? :) 谢谢!

【问题讨论】:

  • 当你这样做var_dump(Session::all());时你会得到什么?
  • 我当然得到了所有的会话,包括闪现的会话。它只是不显示它,有或没有之前 if 'Session::has('error')' 条件
  • 你能做到吗? @if (Session::has('error')) <div class="alert alert-info">{{ Session::get('error') }}</div> @endif
  • 是的,这就是我最初一直试图让它工作的原因,我让它在其他页面中以相同的方法工作......它可能与向另一个方法发送请求有关然后回拨或重定向到原来的?我认为它仍然算作一个请求,但这就像典型的工作流程
  • 比如,你能把sessions文件夹里的所有文件都清空吗?

标签: php laravel


【解决方案1】:

你应该这样调试

清除sessions文件夹中的所有文件

在您的控制器中,您可以使用给定的两种方式中的任何一种来创建 Flash 消息

 Session::flash('error', 'error message');
 return redirect()->back();

  return redirect()->action('Controller@method', $var)->with('error', ['error message']);

然后在你的刀片中

@if (Session::has('error')) 
<div class="alert alert-info">
    {{ Session::get('error') }}
</div> 
@endif

【讨论】:

  • 很好,它有效,但我仍然不确定它是否是一个好的长期解决方案,它不太适合我的头脑,仅以特定方法重新生成会话.. .但我不想尖叫“bug!” :)
  • 啊,我也同意,您是在使用后取消设置或删除所有会话吗?
  • 实际上我当前的会话非常简约,所以我怀疑它是否会超载,我正在清除我不需要的所有内容,并且我非常谨慎地添加除闪光灯以外的其他内容......可能是那个设置会话数据库会消除这种行为吗?它在我来自的 Codeigniter 中运行良好。 :)
  • 来自 Codeigniter,听到这个我不太高兴。 :) Laravel 似乎确实有这样的实现link。我猜你已经尝试过了,虽然呵呵......我会留意的,谢谢你的帮助! :)
  • 哈哈,我也有同感..是的,我也去想了..不客气,伙计:)
猜你喜欢
  • 2023-03-06
  • 2016-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-17
  • 1970-01-01
  • 2013-01-16
  • 2016-01-31
相关资源
最近更新 更多