【问题标题】:laravel form request validation messages for rest api用于rest api的laravel表单请求验证消息
【发布时间】:2018-12-22 15:01:07
【问题描述】:

如何为表单请求中的必需错误、无效错误和最小最大错误返回不同的代码?我正在使用 failedValidation 方法。

使用 API 的移动应用需要显示翻译后的错误消息 并且它只使用api返回的错误代码而不是消息,因此需要将代码分隔为必需的错误、无效错误和最小最大错误以及已经存在的错误

下面是我在表单请求中的代码

/**
 * Handle a failed validation attempt.
 *
 * @param  \Illuminate\Contracts\Validation\Validator  $validator
 * @return void
 *
 * @throws \Illuminate\Validation\ValidationException
 */
protected function failedValidation(Validator $validator)
{
    $errors = (new ValidationException($validator))->errors();
    throw new HttpResponseException(response()->json(['code'=> 'VALIDATION_ERROR','errors' => $errors
    ], JsonResponse::HTTP_UNPROCESSABLE_ENTITY));
}

但我需要检测它是否是必需的错误或已经存在的错误或有效的格式错误或最小最大错误。

如何做到这一点?

【问题讨论】:

    标签: php laravel rest laravel-5 eloquent


    【解决方案1】:

    您可以使用$validator->messages()添加其他信息

    应该是这样的:

    throw new HttpResponseException(response()->json([
       'code'=> 'VALIDATION_ERROR',
       'errors' => $errors, 
       'messages' => $validator->messages()->toArray()
    ], JsonResponse::HTTP_UNPROCESSABLE_ENTITY));
    

    【讨论】:

      【解决方案2】:

      而不是抛出一个新的 HttpResponseException,而是返回一个新的 JsonResponse($data, $httpCode)。

      然后移动应用开发者可以从响应中访问httpCode

      return new JsonResponse([
        'code'=> 'VALIDATION_ERROR',
        'errors' => $errors
      ], JsonResponse::HTTP_UNPROCESSABLE_ENTITY);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-03
        • 2019-11-27
        • 1970-01-01
        • 1970-01-01
        • 2016-09-02
        • 2019-06-27
        • 1970-01-01
        相关资源
        最近更新 更多