我正在使用Laravel的表单验证功能,并试图找出如何在视图中循环表单错误。目前,我已使用以下代码成功验证表单:
public function create()
{
$validator = Validator::make(
Input::all(),
array(
'username' => 'required|alpha_num|unique:users',
'email' => 'email|unique:users',
'password' => 'required|min:6',
'passwordConf' => 'required|same:password'
)
);
if ($validator->fails())
{
return Redirect::to('join')->withErrors($validator);
}
return View::make('user/join')->with();
}
如果验证失败,验证程序会成功验证表单并重定向到join
路由。显然,我还想向用户显示验证消息。我有一个master.blade.php
布局文件,我的所有视图都扩展了,在布局中我有以下代码:
@if (Session::has('errors'))
<div class="alert alert-danger">
@foreach (Session::get('errors') as $error)
Test<br />
@endforeach
</div>
@endif
这似乎只有一半的工作。如果存在验证错误,则会在页面上显示警报div,但不会输出验证错误。这表明Session::has('errors')
正在返回true,但我显然没有正确地迭代验证错误。
如何通过withErrors
迭代发送到视图的验证错误?
答案 0 :(得分:7)
传递给您的视图的自动$errors
变量。您不必直接检查会话。
@foreach ($errors->all() as $error)
{{ $error }}<br/>
@endforeach
以下是the docs的引用:
请注意,我们不必将错误消息显式绑定到GET路由中的视图。这是因为Laravel将始终检查会话数据中的错误,并自动将它们绑定到视图(如果可用)。 因此,请务必注意,
$errors
变量始终可用于所有视图,每次请求,以便您方便地假设$errors
变量始终定义并可以安全使用。$errors
变量将是MessageBag
的实例。