我正在学习laravel(目前正在使用5.0.34版本)并且我有一个帖子请求,当遇到错误时输入这段代码
$message = new MessageBag(["register" => Lang::get("errors.cant_checkout")]);
return Redirect::back()->withErrors($message);
结果是正确的,他重定向到同一个视图,我可以访问$ error变量。 问题是有时错误会一直存储在会话中,因此每次进入页面时都会输出$ error。 怎么会发生这种情况?我做错了吗?
预期:在输出第一次后,$ error从会话
开始答案 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的已安装插件。禁用后,一切运行顺利!