Session::flash( 'key', $data );
某处
{{ Session::get( 'key' ) }}
我正在使用它进行表单验证。现在当表单未验证时,应用程序显示错误,如果我修改表单并再次发布,数据库更新,详细信息显示正确,但错误再次出现!这是相同的,如果我发布未验证的表单,它会显示错误,但如果我然后单击同一页面的导航链接,它会再次显示!
有人碰到过这个吗?
问候
路
答案 0 :(得分:7)
当我使用return view()
/ return View::Make
时,我的Controller @ update方法应该是return redirect()->route()
,我遇到了这个问题。
答案 1 :(得分:2)
在laravel文档中:
flash方法会在会话中存储一个项目,该项目将在下一个请求后过期。它对于存储状态或错误消息等临时数据非常有用。
这意味着,它可以在当前和下一个请求中使用。如果您访问它,它不会自动刷新。为此,请使用Session::flush('key');
。
答案 2 :(得分:1)
从Laravel 5.1开始,您可以使用now()方法,该方法只会影响当前请求:
Session::now('key', 'message');
或
session()->now('key', 'message');
答案 3 :(得分:1)
会话Flash保留了2个请求的会话数据,因为它是在重定向期间使用的。
但是,我遇到了一个用例,在下一个视图中,我确实只想对一个请求使用flash,并找到了一种简单的方法来实现,即从会话中获取而不是获取它。 Session::pull()
获取会话数据并从会话中删除。
@if (Session::has('message'))
<div class="alert alert-message">{{Session::pull('message'}}</div>
@endif
希望这会有所帮助!
答案 4 :(得分:0)
您的代码可能还有其他一些问题,如果您可以共享代码,则可以帮助我们更好地了解此问题。
您可以使用以下代码段将Flash错误消息发送到laravel刀片模板。
@if (Session::has('message'))
<div class="alert alert-success">{{Session::get('message')}}</div>
@endif
答案 5 :(得分:0)
我曾经有过类似的问题,因为我在我的控制器中使用了Session::reflash()
。
确保您的控制器或应用程序中的任何位置没有Session::reflash()
,因为它会闪烁整个会话...使用示例:Session::keep(array('username', 'email'));
仅重新刷新Flash数据的子集
答案 6 :(得分:0)
在创建视图(而不是重定向)时,一种简单的方法来闪烁消息:
Session::flash($key, $value);
Session::push('flash.old', $key);
参考here.
答案 7 :(得分:0)
flash
方法用于存储下一个请求的数据。理想情况下,在将数据刷新到会话后,您应该重定向到新路由。 (这是接受的答案所暗示的。)
但是,如果您没有重定向,则可以在刀片模板中显示会话后调用forget
方法:
{{ session()->flash('key') }}
@php
session()->forget('flash-info');
@endphp