📜  laravel 验证自定义消息示例 - PHP (1)

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

Laravel 验证自定义消息示例 - PHP

在 Laravel 中,表单验证器是一个非常常用的功能,它可以自定义各种验证规则,自定义验证错误消息是一个更好的选择。

本示例将向您演示如何在 Laravel 中自定义验证消息,以及如何在验证器中使用自定义消息。

自定义验证消息

要自定义验证消息,您需要在 resources/lang 目录中创建一个语言文件。这个文件应该命名为 validation.php。在这个文件中,您可以为每个验证规则定义一个错误消息,如下所示:

// resources/lang/validation.php

return [
    'required' => 'The :attribute field is required.',
    'email' => 'The :attribute must be a valid email address.',
    'unique' => 'The :attribute has already been taken.',
];

上面的代码中,默认已经定义了一些错误消息,如 requiredemailunique 等。

在这样的语言文件中,可以根据自己的需求来定义和覆盖这些默认的验证规则的错误消息。

在验证器中使用自定义消息

当使用 Laravel 表单验证器时,您可以指定自定义验证消息。您可以在路由文件中使用 Validator::make 方法来创建一个新的验证器实例,如下所示:

// routes/web.php

use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request;

Route::post('/register', function (Request $request) {
    $validator = Validator::make($request->all(), [
        'name' => 'required|string|min:6',
        'email' => 'required|string|email|max:255|unique:users',
        'password' => 'required|string|min:8|confirmed',
    ], [
        'required' => 'The :attribute field is required.',
        'string' => 'The :attribute field must be a string.',
        'min' => 'The :attribute field must be at least :min characters.',
        'email' => 'The :attribute must be a valid email address.',
        'unique' => 'The :attribute has already been taken.',
        'confirmed' => 'The password confirmation does not match.',
    ]);

    if ($validator->fails()) {
        return redirect('/register')
            ->withErrors($validator)
            ->withInput();
    }

    // Register a new user...
});

在这个示例中,我们使用了一个 Validator::make 方法来创建一个新的验证器实例。在这个方法中,第二个参数是验证规则,第三个参数是自定义错误消息。

Validator::make 方法中定义自定义消息时,可以使用 :attribute 来代表字段名称,使用 :min:max:value 等来代表验证规则中定义的值。

最后,如果验证器失败,我们将重定向回注册页面,并显示相关的验证错误消息。withErrors 方法用于传递错误消息,withInput 方法用于将原始表单值带回表单,以便用户更容易地更正错误。

结论

本示例演示了如何在 Laravel 中自定义验证消息,以及如何在验证器中使用自定义消息。在实际开发中,您也可以根据自己的需求进行更灵活的定制。