如果图像大小超过Laravel中的验证期间,则获取422(不可处理的内容)

Getting 422 (Unprocessable Content) if image size exceeds during validation in Laravel

提问人:0x9342812j1o 提问时间:9/23/2023 更新时间:9/25/2023 访问量:27

问:

如何完全消除控制台中显示的 422(不可处理内容)错误?只有当验证失败时才会发生这种情况,例如,上传的图像超出了我在验证中所需的文件大小。

这是我的验证码。

$request->validate([
            'message' => 'required|max:5000',
            'id' => 'required|integer|exists:users,id',
            'content' => 'nullable|integer|exists:contents,id',
            'photo' => 'nullable|image|mimes:jpeg,png,jpg|max:2048'
        ], [
            'message.required' => ERR_COMMENT_REQUIRED,
            'message.max' => ERR_PHOTO_MAX,
            'id.required' => ERR_ID_REQUIRED,
            'id.integer' => ERR_ID_INTEGER,
            'id.exists' => ERR_ID_EXIST,
            'photo.image' => ERR_PHOTO_IMAGE,
            'photo.mimes' => ERR_PHOTO_JPG_PNG_GIF,
            'photo.max' => ERR_PHOTO_MAX
        ]); 

在我的 ajax 代码中,我已经创建了一个错误处理程序来捕获 422 错误并通知用户发生了什么。到目前为止,它运行良好。我只是不知道如何完全删除控制台窗口中的 422(不可处理内容)错误或是什么原因导致的?我整晚都在挠头,哈哈。希望有人能帮我弄清楚如何解决这个问题。谢谢。

jQuery Ajax Laravel Laravel-8

评论


答:

0赞 Ali Raza 9/23/2023 #1

这是不可能的。因为它来自浏览器。 但是,您可以在错误块中清除控制台。但不建议这样做

0赞 Shriyank 9/25/2023 #2

Laravel 验证器将在验证失败时返回 422 状态代码。您可以创建如下所示的验证函数以返回自定义状态代码。

 $validator = Validator::make($request->all(), [
        'first_name' => 'required',
        'last_name' => 'required',
        'email' => 'required',
        'message' => 'required',
    ]);

    if($validator->fails()){
        $errors = collect($validator->errors());
        $error = $errors->unique()->first();
        return return Response::json([
           'success' => false,
           'message' => $error[0]
        ], 200); //custom status code
  }

评论

0赞 0x9342812j1o 9/26/2023
我要试试这个。如何在此方法上添加自定义错误消息,类似于我在示例中的错误消息?谢谢。