使用自定义json响应进行Laravel验证

时间:2019-02-15 04:29:44

标签: json laravel validation

快速提问。 可以更改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",
    ],
}

改变这一点的最佳方法是什么? 甚至有可能吗?

谢谢。

1 个答案:

答案 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进行了尝试,也许这对您有用。