Laravel错误存储在会话中

时间:2016-01-14 17:09:30

标签: php laravel laravel-5

我正在学习laravel(目前正在使用5.0.34版本)并且我有一个帖子请求,当遇到错误时输入这段代码

$message = new MessageBag(["register" => Lang::get("errors.cant_checkout")]);
return Redirect::back()->withErrors($message);

结果是正确的,他重定向到同一个视图,我可以访问$ error变量。 问题是有时错误会一直存储在会话中,因此每次进入页面时都会输出$ error。 怎么会发生这种情况?我做错了吗?

预期:在输出第一次后,$ error从会话

开始

2 个答案:

答案 0 :(得分:0)

在您的示例中,您只是使用withErrors->将错误消息刷新到视图中。闪存数据仅在后续HTTP请求期间可用,因此不会保存。

但是,我认为您遇到的问题是默认情况下$errors会发送到每个视图,因此始终会设置它。在您的视图中,您需要检查是否有任何实际的错误消息要显示(如下所示)。或者,您可以刷新不同的数据,例如->with('specific_error', $message),并在您的视图中查找$specific_error

 @if($errors->any())
   // do work
   <ul>
     @foreach($errors->all() as $error)
       <li>{{ $error }}</li>
     @endforeach
   </ul>
 @endif

答案 1 :(得分:0)

搜索后我发现引起问题的是一个名为DebugBar的已安装插件。禁用后,一切运行顺利!