有没有办法操纵或更改laravel默认错误消息到JSON响应。我正在构建一个API。我得到的当前回应是
{
"email": [
"The email has already been taken."
],
"phone": [
"The phone has already been taken."
]
}
我希望它是这样的
{
"errors": [
{
"field": "username",
"message": "The username field is required."
},
{
"field": "password",
"message": "The password field is required."
}
]
}
$validator = Validator::make($request->all(), [
'email' => 'required|string|email|max:50|unique:customers',
'phone' => 'required|string|max:10|min:10|unique:customers',
'password' => 'required|string|min:6',
]);
if ($validator->fails()) {
return response()->json($validator->messages(), 200);
}
从messageBag中提取错误并根据需要格式化它们:
$errors = [];
foreach($validator->getMessageBag()->toArray() as $key=>$messages) {
$errors[$key] = $messages[0];
}
return response()->json($errors, 200);
如果您在第一个示例中获得了对象,则可以通过for..in
循环更改它
var response = {
"email": [
"The email has already been taken."
],
"phone": [
"The phone has already been taken."
]
};
var allError = [];
for(let i in response){
allError.push({
field: i,
message: response[i][0]
});
}
var errors = {errors:allError};
console.log(errors);
你不应该从php / laravel改变,因为那时你将无法为单个输入显示多个错误。
也永远不会更改也适用于网络的基本代码。你不能只考虑API,它也可以用于网络。