laravel表单验证如何返回不带具体错误字段的统一信息

目前使用laravel的表单验证类Validation,返回的信息如下
,我每个字段都设置了bail,单个字段验证失败了就终止了。
request是抽离出来的Request类,注入进控制器的

{
    "message": "The given data was invalid.",
    "errors": {
        "name": [
            "The name field is required."
        ],
        "mobile": [
            "The mobile field is required."
        ],
        "number": [
            "The number field is required."
        ],
        "money": [
            "The money field is required."
        ]
    }
}

为了方便前端统一调取, errors如何修改为如下

{
    "message": "The given data was invalid.",
    "errors": "The name field is required.",
    "code": 422
}

errors数组里如何才能只显示文字描述,不显示具体字段信息,且所有字段都验证成功的话,才返回正确信息

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案
/**
 * 重写参数错误响应
 * @param Validator $validator
 * @throws InvalidRequestException
 */
public function failedValidation(Validator $validator): void
{
    dd($validator->errors()->first());
}
把这个放在请求器。在dd这个位置 返回响应
1年前 评论
讨论数量: 11

->errors()->first()

1年前 评论
晴空 (楼主) 1年前
// Validator.php
public function messages()
{
    return [
        'name.required' => '信息错误',
        'mobile.required' => '信息错误',
        'number.required' => '信息错误',
        'money.required' => '信息错误',
    ];
} 

这是简单的处理方式,如果需要全局的返回的话,要在 Exception 中处理。

1年前 评论
晴空 (楼主) 1年前
MArtian (作者) 1年前
晴空 (楼主) 1年前
MArtian (作者) 1年前
晴空 (楼主) 1年前

你这个返回的 JSON 不正确

1年前 评论
/**
 * 重写参数错误响应
 * @param Validator $validator
 * @throws InvalidRequestException
 */
public function failedValidation(Validator $validator): void
{
    dd($validator->errors()->first());
}
把这个放在请求器。在dd这个位置 返回响应
1年前 评论

在各位同学的帮助下,目前这个已经实现了,就是重写FormRequest类的failedValidation方法

use Illuminate\Contracts\Validation\Validator;
use Illuminate\Http\Exceptions\HttpResponseException;

   /**
    * 重写参数错误响应
    * @param Validator $validator
    * @throws HttpResponseException
    */
    public function failedValidation(Validator $validator): void
    {

        $error = $validator->errors()->first();
        throw new HttpResponseException(response()->json([
            "code" => 422,
            "msg" => $error,
            "data" => "发生错误"
        ]));
    }

异常可以自行定义,我这用的HttpResponseException

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!