我正在学习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的插件。禁用后,一切都运行顺利!