📜  如何在 laravel 8 中显示验证错误 - PHP (1)

📅  最后修改于: 2023-12-03 15:38:19.159000             🧑  作者: Mango

如何在 Laravel 8 中显示验证错误

在 Laravel 8 中,我们可以使用 validate 方法来验证用户提交的请求。如果验证失败,Laravel 会自动将错误信息存储在 $errors 变量中,以便我们在视图中显示这些错误。

在视图中显示错误信息

我们可以使用 @if@foreach Blade 指令来显示错误信息。下面是一个简单的表单,它会验证用户是否输入了名称:

<form method="POST" action="/hello">
    @csrf
    <label for="name">名称:</label>
    <input type="text" name="name" id="name">
    @if ($errors->has('name'))
        <div class="alert alert-danger">{{ $errors->first('name') }}</div>
    @endif
    <button type="submit">提交</button>
</form>

在上面的代码中,我们使用了 @if 指令来检查 $errors->has('name') 是否为真,如果是,我们就显示一个包含错误信息的 div 元素。

如果你的表单有多个字段需要验证,你可以使用 @foreach 指令来遍历 $errors->all() 数组。

修改默认错误消息

如果你想修改默认的错误消息,你可以在 resources/lang 文件夹中创建一个语言文件,例如 zh_CN/validation.php

在这个文件中,你可以使用 array_dot 函数来定义错误消息。例如,如果你想修改 required 规则的默认错误消息,你可以这样定义:

<?php

return [
    'required' => '请输入 :attribute',
];

在上面的代码中,:attribute 会被替换成验证的字段名称。

自定义表单请求类

我们还可以通过创建自定义表单请求类来自定义验证规则和错误消息。

首先,我们可以使用 make:request Artisan 命令来生成一个表单请求类:

php artisan make:request ContactFormRequest

然后,在生成的请求类中,我们可以定义 rulesmessages 方法来分别定义验证规则和错误消息。

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class ContactFormRequest extends FormRequest
{
    public function rules()
    {
        return [
            'name' => 'required',
            'email' => 'required|email',
            'message' => 'required',
        ];
    }

    public function messages()
    {
        return [
            'name.required' => '请输入您的姓名。',
            'email.required' => '请输入您的邮箱地址。',
            'email.email' => '请输入有效的邮箱地址。',
            'message.required' => '请输入您的留言内容。',
        ];
    }
}

最后,在控制器中使用自定义请求类:

<?php

namespace App\Http\Controllers;

use App\Http\Requests\ContactFormRequest;

class ContactFormController extends Controller
{
    public function store(ContactFormRequest $request)
    {
        // 表单验证通过,执行存储逻辑
    }
}

在自定义的请求类中,我们还可以定义 authorize 方法来检查用户是否有权限提交表单。