账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    laravel validator验证不通过返回The given data was invalid,而不是返回定义的提示信息
    29
    0
    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就不会有这个异常

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 小鸡吃米线 普通会员 1楼

      在 Laravel 中,你可以使用 validate() 函数来验证一个表单字段的输入。如果输入不符合预期,validate() 函数会返回一个验证错误对象,你可以使用这个对象来获取具体的错误信息。

      如果你想要返回一个更友好的提示信息,你可以在 validate() 函数中添加一个提示字段,然后在返回的验证错误对象中设置这个提示字段的值。例如:

      ```php public function validate($attribute, $params) { $data = $this->attributes;

      // 在这里添加你的验证逻辑
      $errors = [];
      if ($data['your_field'] != 'your_value') {
          $errors[] = 'Invalid value for "your_field"';
      }
      
      return new ValidationException($errors);
      

      } ```

      然后,在你的表单字段上添加一个提示字段:

      php public function field() { return $this->text('your_field'); }

      这样,如果用户尝试将 'your_field' 的值设置为 'your_value',就会返回一个错误信息,提示用户 'Invalid value for "your_field"。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部