【问题标题】:Laravel5.1 jsValidation Unique rule issueLaravel5.1 jsValidation 唯一规则问题
【发布时间】:2015-12-23 19:09:56
【问题描述】:

我正在使用 laravel-jsValidation,https://github.com/proengsoft/laravel-jsvalidation,除了唯一规则外,一切正常! 这是我所拥有的: 规则:

protected $userValidate=[
          'lastname' => 'required|max:100|min:2',
          'firstname' => 'max:100|min:2',
          'username' => 'required|unique:users|min:2',
          'email' => 'required|unique:users|email|max:255',
          'password' => 'required|confirmed|min:6',  ];

获取用户列表功能:

public function getUsers(){
  $validator = JsValidator::make($this->userValidate);      
  return view('admin.usersList')->withValidator($validator);}

存储功能:

public function store(Request $request){   
  $data = $request->all();

  $v = Validator::make($data, $this->userValidate);           

  if ($v->fails())
  {
      return redirect()->back()->withErrors($v->errors());          
  }  

  $user = User::create([
        'lastname' => $data['lastname'],
        'firstname' => $data['firstname'],
        'username' => $data['username'],
        'email' => $data['email'],                        
        'password' => bcrypt($data['password']), 
        'confirmed' => 1,                 
    ]);       

  return redirect('admin/usersList');}

问题是当我输入用户名或电子邮件时,其输入下方会出现一条错误消息:

哎呀,好像出了点问题。

注意:我设置了:'disable_remote_validation' => false, 当我将其更改为true 时,只有当我输入用户表中不存在的用户名和电子邮件时它才能正常工作!

我的代码有什么错误?

【问题讨论】:

  • 已经是真的了,其实我是用模态表单来创建新用户的,我正在尝试通过jsValidation来验证我的表单。
  • 嗯。显然这是整个错误信息。您可能应该使用左下角的edit 按钮将该图片添加到您的问题中。
  • 抱歉我不知道有添加图片的功能^^

标签: validation unique laravel-5.1 validationrules formvalidation-plugin


【解决方案1】:

我是laravel-jsvalidation 包的维护者。此问题已在 1.3.0 版

中修复

UniqueActiveURLExists 规则和自定义验证会自动进行验证。只需启用它

 'disable_remote_validation' => false,

【讨论】:

  • 请清楚地说明在哪里添加这些代码行。除非这根本没有帮助。
【解决方案2】:

唯一验证需要在表名之后的列名。我假设您的列名是数据库中的email。您的电子邮件规则应如下所示:

'email' => 'required|unique:users,email|email|max:255',

【讨论】:

  • @BKF 我现在有点困惑。您编写了不创建已在数据库中的用户名和电子邮件的规则。这就是您看到此错误的原因。我看不出有什么问题。其实你想做什么?
  • 唯一规则意味着您不能创建包含该字段的新用户行(此处:用户名和电子邮件),我想要做的事情:当我创建带有电子邮件令牌的新用户时,会出现错误消息出现说:这个用户名/电子邮件已经是令牌。就是这样:)
  • @BKF 是的,应该是。因为,作为您的代码,您无法使用现有的用户名和电子邮件创建新行。您可以使用尚未在数据库中的新用户名和电子邮件创建行。
  • 是否有任何适用于 laravel 5.1 的 js-form-validator 可以正常工作,可能我会用它来代替这个 :)
【解决方案3】:
return [
            'name' => 'required',
            'email' => 'required|email|unique:`admin_users`,email',
            'phone' => 'required|unique:admin_users,phone',
            'password' => 'required|min:6|max:16'
        ];

【讨论】:

  • 您好,以下是您回答的一些准则:不建议发布纯代码的答案,请考虑同时解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助、质量更好,并且更有可能吸引投票。
【解决方案4】:

我认为问题是:这个包不支持远程验证,我可以在 Config/jsValidation.php 中看到:

/* * 启用或禁用数据库和自定义规则的 Ajax 验证。 * 默认情况下,Unique、ActiveURL、Exists 和自定义验证通过 AJAX 进行验证 */ 'disable_remote_validation' => 假,

那么如何通过 AJAX 验证此规则?请问有教程吗?

【讨论】:

  • 此问题已在 master 分支中解决。试试你的问题是否解决了,我会发布一个新版本
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-08-30
  • 2015-02-27
  • 1970-01-01
  • 2012-01-23
  • 1970-01-01
相关资源
最近更新 更多