laravel API 接口使用 Validator 无法返回具体的未通过验证的错误信息
高洛峰
高洛峰 2016-10-22 13:30:52
[PHP讨论组]

API 接口中使用 Validator 对表单进行验证;
当有为通过验证的项时;
都是返回

{
  "message": "The given data failed to pass validation.",
  "status_code": 500}

无法返回具体的未通过验证的信息;
那前端或者移动端接到返回的错误信息的时候;
并不能告诉用户到底是哪一项不符合要求;
我想要的是这样的;

{
  "message": "邮箱已经注册",
  "status_code": 500}

{
  "message": "必须是6-16位的密码",
  "status_code": 500}

请教亲们;需要怎么做?

亲们用 laravel 写接口的时候;提交的表单字段是怎么验证的?怎么返回验证结果的?


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
三叔

Laravel 是可以自定义错误格式的,需要在控制器基类中重写 formatValidationErrors 方法

use Illuminate\Contracts\Validation\Validator;

protected function formatValidationErrors(Validator $validator)
{
     $message = $validator->errors()->first();
     return ['message'=>$message, 'status_code' => 500];
}

你还可以按照你自己的需求进行扩展,上面只是一个简单的例子,返回的是第一个错误信息.

如果你使用 dingo/api 验证处理

当然你也可以在

if ($validator->fails()) {     //自行封装个处理验证失败返回值 类似下面
     $this->respondWithValidatorError($validator->errors());    
}


热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号