如何在laravel中获得键值对中的验证程序失败响应

如何在laravel中获得键值对中的验证程序失败响应,laravel,Laravel,我正在拉威尔制作注册API。 我使用了验证器来验证表单 以下是我的控制器: public function register(Request $request) { $validator = Validator::make($request->all(), [ 'contact' => 'required|numeric|unique:users', 'email' => 'required|email|unique:users',

我正在拉威尔制作注册API。 我使用了验证器来验证表单

以下是我的控制器:

 public function register(Request $request)
{
    $validator = Validator::make($request->all(), [
        'contact' => 'required|numeric|unique:users',
        'email' => 'required|email|unique:users',
        'password' => 'required|min:8|regex:/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{6,}$/|confirmed',
    ],
    [
        'contact.unique' => 'The phone number is already in use.',
        'email.unique' => 'The email address is already in use.',
        'password.regex' => 'Password should be a minimum of 8 characters including uppercase and lowercase letters, at least 1 number and at least 1 special character (!@#$%^&*).',
        'password.confirmed' => 'Password does not match.',
    ]
    );

    if ($validator->fails()) {
        return response()->json(['user' => 'Failed', 'message' => $validator->errors()], 409);
    }
}
它在《邮递员》中给出了回应:

{
"user": "Failed",
"message": {
    "contact": [
        "The phone number is already in use."
    ],
    "email": [
        "The email address is already in use."
    ]
}
}
但我需要这样:

{
"user": "Failed",
"message": "The email address is already in use and The phone number is already in use."
}
如何做到这一点?

试试这个:

$message = count($validator->errors()->all()) > 1 ? implode($validator->errors()->all(), ' and ').'.' : $validator->errors()->all()[0].'.';

return response()->json(['user' => 'Failed', 'message' => $message], 409);
您需要从自定义验证消息中删除点,并将其附加到连接消息上,如上面$message所示