3

这让人头疼!根据我对 laravel 的会话 flash 方法的理解,一旦设置然后调用,它将被销毁......

Session::flash( 'key', $data );

某处下线

{{ Session::get( 'key' ) }}

我正在使用它进行表单验证。现在当表单没有验证时,应用程序显示错误,如果我修改表单并再次发布,数据库更新,详细信息显示正确,但错误再次出现!如果我发布未验证的表单也是如此,它会显示错误,但如果我然后单击同一页面的导航链接,它会再次显示!

有人遇到过这个吗?

问候

卢克

4

8 回答 8

8

当我在 Controller@update 方法中执行return view()/return View::Make时,我遇到过这个问题。return redirect()->route()

于 2015-01-29T18:32:25.137 回答
5

从 Laravel 5.1 开始,你可以使用now()方法,它只会影响当前的请求:

Session::now('key', 'message');

或者

session()->now('key', 'message');
于 2018-04-03T09:19:35.263 回答
3

在 laravel 文档中:

flash 方法在会话中存储一个项目,该项目将在下一次请求后过期。它对于存储状态或错误消息等临时数据很有用。

这意味着,它在当前和下一个请求中都可用。如果您访问它,它不会自动刷新。为此,请使用Session::flush('key');.

于 2013-01-25T10:37:47.930 回答
2

会话 Flash 保留 2 个请求的会话数据,因为它是在重定向期间使用的。

但是,我遇到了一个用例,我确实想在下一个视图中仅对 1 个请求使用 flash,并找到了一种简单的方法,即从会话中提取而不是获取它。Session::pull()获取会话数据并从会话中删除。

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

希望这可以帮助!

于 2020-01-25T18:43:25.937 回答
0

您的代码可能存在其他问题,如果您可以分享您的代码,它将帮助我们更好地了解这个问题。

您可以使用以下代码片段将错误消息闪烁到您的 laravel 刀片模板。

@if (Session::has('message'))

    <div class="alert alert-success">{{Session::get('message')}}</div>

@endif
于 2014-04-26T19:36:12.587 回答
0

我曾经有过类似的问题,因为我Session::reflash()在我的控制器中使用过。

确保您Session::reflash()的控制器或应用程序中没有任何地方,因为它会刷新整个会话...使用示例:Session::keep(array('username', 'email'));仅重新刷新 Flash 数据的子集

于 2015-01-22T08:52:40.057 回答
0

flash方法用于存储下一个请求的数据。理想情况下,将数据刷新到会话后,您应该重定向到新路由。(这是公认的答案所暗示的。)

但是,如果您没有重定向,则可以forget在刀片模板中显示会话后调用该方法:

{{ session()->flash('key') }}

@php
    session()->forget('flash-info');
@endphp
于 2018-02-18T21:47:13.710 回答
0

当您创建视图(而不是重定向)时,一种简单的闪现消息的方法是:

Session::flash($key, $value);
Session::push('flash.old', $key);

参考这里。

于 2015-07-31T10:25:26.943 回答