拉拉维尔错误存储在会话中


Laravel Error stored in session

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

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

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

预期:第一次输出后,$error离开会话

在您的示例中,您只需使用 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

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