【问题标题】:Laravel session data not agingLaravel 会话数据不老化
【发布时间】:2019-01-11 11:01:15
【问题描述】:

我不完全确定标题是否正确,因为我还不知道我是如何解决这个问题的。

我有什么:

  • 具有 2 个字段的简单模型

  • crud 控制器

  • 在创建/编辑时,我处理数据并使用一些信息重定向。 info 通过以下两种方法之一传递:

    • session()->flash("key","info")
    • redirect()->route("route.name.here")->with("key","info")

我(在我的布局刀片文件的底部)添加了一行以查看会话中存储的内容,希望我能知道发生了什么问题

@dd(session()->all(),session("_flash"),session("key"))

我的实际问题是什么?我一次又一次地得到相同的信息。

  • 创建新实例并向用户闪烁确认
  • 验证返回错误消息

无论发生哪种情况,我都会在每个连续的页面调用中再次获得返回的信息。如果我做某事来获得一条新消息,该消息将替换旧消息并在我网站的每个页面上与我保持一致。 (即使是只给你一些“lorem ipsum”文本的主页) 如果最后一个信息是由于验证失败而导致的错误,我也会保留旧的输入。 索引页面仅加载实例并加载视图文件(带有数据)。 例如切换索引文件的页面(我正在使用文档中的 laravel 分页)并且由于转储输出,我可以看到“会话”中没有任何变化(包括带有键“_token”的条目。我认为这个应该改变,但我目前无法检查工作站点)。创建(模型的)新实例的表单包含在索引页面中(带有内联表单的引导卡标题,因为它只需要 1 个字段)。

我已经尝试了什么?

  • 清除缓存
  • 删除会话文件(重新创建)
  • 重启apache
  • 重启服务器(类似于树莓派)

我不知道我是怎么做到的,希望得到一些指点

系统:

  • PHP:7.3.0alpha4
  • Laravel:5.6.29
  • 会话处理:文件
  • 操作系统:Ubuntu 18.04.1 LTS

编辑: 我能够使用不同的 laravel 安装检查 _token 键,并且该值会随着每次页面加载而变化。在我看来,会话处理存在问题,但我不知道在哪里,因为它只有部分问题(写一些新的东西显然可行,但改变似乎遇到了问题)

编辑2:

【问题讨论】:

  • 目前(以确保这不是权限问题)我的网络服务器正在运行与我用于 ssh 的用户相同的用户。没有任何改变:(
  • 尝试使用 redis 作为会话驱动程序:仍然没有变化。所以....没有权限问题。必须在代码中的某个地方。我不知道它可能在哪里。

标签: php laravel


【解决方案1】:

如我所见,您在会话 laravel 文档中遗漏了一些细节。

首先,如果在您的两种方法(create , edit) 中使用redirect,则最好将with 用于您的闪存会话消息,如下例所示:

 return redirect('route.name')->with('status', 'your message here');

有关功能如何工作的更多信息,请查看redirecting with flashed session data in laravel application

接下来,在您的刀片模板中,您应该在该会话变量上创建一个测试,如果它存在与否,然后显示它。下面的这段代码将展示如何使用 Session laravel Facade :

@if(Session::has('key'))
    {{ Session::get('key') }}
@endif

如果您对laravel 5.0 session documentation section感兴趣,可以找到如何使用会话外观

【讨论】:

  • 我尝试了session()->flash(...),因为我错过了信息(在视图文件中重定向之后)。我的测试看起来和你的完全一样(除了我使用的是辅助函数而不是外观 - AFAIK 它没有任何区别)。我的问题不在于没有“刷新”数据,而是数据在刷新后没有被删除(我不是在谈论 2 次,而是 x 次,这意味着 10 或 100 或更多)。
  • 我正在使用redirect()->route('route.name',['param'=>$value])->with('key','info'),因为我找不到任何可以将其直接传递给重定向函数的提示。 Named route docs 向用户显示数据不是我的问题。我的问题是我有你链接的代码(用于显示闪存数据),它显示在每个后续页面加载,而不仅仅是下一个。
  • 你能分享一下你的创建和编辑方法吗,我猜你在其中做错了什么
  • 这是我的index page 正如我之前所说:创建表单是索引页的一部分(右上角)这是pastebin of my index and edit methods
猜你喜欢
  • 2022-09-23
  • 2015-11-26
  • 2014-06-23
  • 2014-07-18
  • 1970-01-01
  • 2017-07-06
  • 2016-11-15
  • 2017-12-21
  • 1970-01-01
相关资源
最近更新 更多