在视图中循环验证错误

时间:2014-02-23 02:18:00

标签: php validation laravel laravel-4

我正在使用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迭代发送到视图的验证错误?

1 个答案:

答案 0 :(得分:7)

传递给您的视图的自动$errors变量。您不必直接检查会话。

@foreach ($errors->all() as $error)
    {{ $error }}<br/>
@endforeach

以下是the docs的引用:

  

请注意,我们不必将错误消息显式绑定到GET路由中的视图。这是因为Laravel将始终检查会话数据中的错误,并自动将它们绑定到视图(如果可用)。 因此,请务必注意,$errors变量始终可用于所有视图,每次请求,以便您方便地假设$errors变量始终定义并可以安全使用。 $errors变量将是MessageBag的实例。