Laravel 表单验证:获取错误消息 Draft 1 个改进

问题#

我如何在视图中获取验证错误信息?

回答#

在请求参数未通过验证时,Laravel 会自动把用户重定向到之前的位置,同时将所有的验证错误信息自动 闪存到会话中

自动绑定的 $errors 变量#

在重定向回原位置后,Lavarel 会检查会话数据中的错误信息,并自动将其绑定到视图(如果这个视图文件存在)。在视图中你可通过 $errors 变量来获取错误信息,$errors 变量是 Illuminate\Support\MessageBag 的一个实例,它拥有各种方便的方法处理错误信息。

下面是在视图中显示错误信息的实际例子:

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

$errors 变量常用方法#

取特定字段的第一个错误信息#

要获取特定字段的第一个错误消息,可以使用 first 方法:

$errors = $validator->errors();

echo $errors->first('email');

获取特定字段的所有错误消息#

如果需要获取指定字段的所有错误消息的数组,则可以使用 get 方法:

foreach ($errors->get('email') as $message) {
    //
}

如果要验证表单的数组字段,你可以使用 * 来获取每个数组元素的所有错误消息:

foreach ($errors->get('attachments.*') as $message) {
    //
}

获取所有字段的所有错误消息#

如果要得到所有字段的所有错误消息,可以使用 all 方法:

foreach ($errors->all() as $message) {
    //
}

判断特定字段是否含有错误消息#

has 方法可以被用来判断给定的字段是否存在错误信息:

if ($errors->has('email')) {
    //
}

参考#

本 Wiki 尚未完善,邀您参与 如何撰写一篇高品质的 Wiki?