laravel validator验证不通过返回The given data was invalid,而不是返回定义的提示信息

return Validator::make($data, [
            'name'     => ['required', 'string', 'max:255'],
            'email'    => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:6'],
            'phone' => ['required', 'string', 'min:8', 'unique:users'],
        ], [
            'email.unique' => '该邮箱已注册',
            'phone.unique' => '该手机号已注册',
        ]);

api请求后

debug
:
{line: 315,…}
class
:
"Illuminate\Validation\ValidationException"
file
:
"/home/vagrant/website/idea/laravel/vendor/laravel/framework/src/Illuminate/Validation/Validator.php"
line
:
315
trace
:
[,…]
message
:
"The given data was invalid."
status_code
:
500

调试的时候去掉验证里的unique就不会有这个异常

阅读 17.8k
5 个回答
新手上路,请多包涵

在appExceptionsHandler.php里面的render方法里加入判断

    if ($exception instanceof ValidationException){
            $errors = @$exception->validator->errors()->toArray();
            $message = null;
        if (count($errors)) {
            $firstKey = array_keys($errors)[0];
            $message = $errors[$firstKey][0];
        }
        throw new Exception($message,$exception->getCode());
    }
新手上路,请多包涵
use IlluminateSupportArr;
if ($exception instanceof ValidationException) {
 return $this->response($code, Arr::first(Arr::collapse($exception->errors())));
}
        if ($validator->fails()) {
            throw new \InvalidArgumentException($validator->messages()->first());
        }

把这个加上试试。

看这里

clipboard.png

在resources/lang/zh_cn/validation.php中‘attributes’=>[

'email' => '邮箱',
'name' => '姓名',

],试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题