如何使用 Laravel 自定义验证消息?

How to customize validation messages using Laravel?


    public function UserCheck(Request $request)
    {
        $Code0 = array("code" => 0, "message" => "Username is valid");
        $Code1 = array("errors" => array(array("code" => 1, "message" => "A valid username is required.", "userFacingMessage" => "Something went wrong")));
        $Code2 = array("code" => 2, "message" => "Username not appropriate for ". config('app.name'));
        $Code3 = array("code" => 3, "message" => "Usernames can be 3 to 20 characters long");

        $validate = $request->validate([
            'username' => ['required', 'string', 'min:3', 'max:20', 'unique:users', 'regex:/^[a-zA-Z0-9_]*$/'],
        ]);

    } 

如果验证失败,我该如何让 API 显示自定义错误消息?我读了这个 https://laravel.com/docs/9.x/validation#quick-writing-the-validation-logic 但它没有帮助

还有,正则表达式,有什么办法只能在中间,不超过1个吗?

我已经尝试阅读谷歌搜索有关验证查询的文档,但没有任何帮助 我希望 API 到 return “{"code":0,"message":"Username is valid"}” 如果验证通过或者如果验证失败 return 错误示例之一:用户名低于 3 个字符然后 return “ {"code":3,"message":"Usernames can be 3 to 20 characters long"}"

请帮帮我

您可以自定义验证消息,请查看 laravel 文档 here

您的代码应如下所示:

$messages = [
    'min' => json_encode(['code'=> 3, 'message' => 'Username must be at least 3 characters']),
];

$validator = Validator::make($request->all(), [
    'username' =>
        [
            'required',
            'string',
            'min:3',
            'max:20',
            'unique:users',
            'regex:/^[a-zA-Z0-9_]*$/'
        ]
], $messages);

if ($validator->fails()) {
    return response()->json($validator->messages(), 422);
}else{
    return response()->json(["code" => 0, "message" => "Username is valid"]);
}

此处仅针对 min 规则自定义消息,但您可以对所有规则执行相同的操作。