快速提问。 可以更改laravel的JSON验证响应吗? 这是我在Laravel中构建的自定义API。
验证过程
$validation = $this->validate(
$request, [
'user_id' => 'required',
]);
响应会像这样在json中显示
{
"message": "The given data was invalid.",
"errors": {
"user_id": [
"The user id field is required."
],
}
}
最好它将变成这样。
{
"common:" [
"status": "invalid",
"message": "Param xxxx is required",
],
}
改变这一点的最佳方法是什么? 甚至有可能吗?
谢谢。
答案 0 :(得分:2)
您可以执行此操作,它将在全局范围内反映出来。 导航到以下文件夹并使用Controller.php app / Http / Controllers
use Illuminate\Http\Request;
在Controller.php中编写以下方法,并根据需要更改响应。
public function validate(
Request $request,
array $rules,
array $messages = [],
array $customAttributes = [])
{
$validator = $this->getValidationFactory()
->make(
$request->all(),
$rules, $messages,
$customAttributes
);
if ($validator->fails()) {
$errors = (new \Illuminate\Validation\ValidationException($validator))->errors();
throw new \Illuminate\Http\Exceptions\HttpResponseException(response()->json(
[
'status' => false,
'message' => "Some fields are missing!",
'error_code' => 1,
'errors' => $errors
], \Illuminate\Http\JsonResponse::HTTP_UNPROCESSABLE_ENTITY));
}
}
我已经使用Laravel 5.6进行了尝试,也许这对您有用。