如何在更新功能上忽略电子邮件地址上的唯一验证规则?

时间:2015-12-04 13:26:56

标签: php mysql laravel-5

我有一个表单,它位于编辑页面,其中包含字段名称电子邮件。现在我不想查看电子邮件验证,这是独一无二的。我已将验证放在规则中,例如'电子邮件' =>'唯一:用户',它完全适用于创建页面。所以我想在编辑页面上忽略该验证。我必须在更新函数的参数中使用FormRequest类,如FormRequest $ request,它定义了表单字段验证的规则数组。

public function rules()
    {
        $business = BusinessModel::all();

        return[
                'companyName' =>'required',
                'address1'    =>'required',
                'pinCode'     =>'required|numeric',
                'city'        =>'required',
                'email'       =>'required|email|unique:users'.$id,
                'phoneNumber' =>'required|numeric|unique:business|size:10',
                'website'     =>'required|url',
                'contactname' =>'required',
                'designation' =>'required',
                'emailaddress'=>'required|email|unique:business',
                'phno'        =>'required|numeric',
              ];
      }

我们如何在FormRequest类中将id传递给rules函数...因为在这种情况下..它会显示我的错误,$ id未定义
 'email' =>'required|email|unique:users'.$id, [错误未定义变量ID]

2 个答案:

答案 0 :(得分:2)

只传递当前记录的primary key,验证器将跳过表中的那一行。

'email'=>'unique:users,email,'.$id,

其中,

电子邮件是field name$id是存储primary key的变量。

答案 1 :(得分:0)

因为您正在使用FormRequest类,所以$ id变量不能直接使用。

但是,通过表单输入或路由参数,此类已经可以使用相同的数据,具体取决于您的结构。

因此,如果路线类似于myapp/user/234,那么您可以使用$this->route('user')

访问用户ID

这会使您的规则看起来像:

   public function rules()
    {
        $business = BusinessModel::all();

        return[
                'companyName' =>'required',
                'address1'    =>'required',
                'pinCode'     =>'required|numeric',
                'city'        =>'required',
                'email'       =>'required|email|unique:users'.$this->route('user'),
                'phoneNumber' =>'required|numeric|unique:business|size:10',
                'website'     =>'required|url',
                'contactname' =>'required',
                'designation' =>'required',
                'emailaddress'=>'required|email|unique:business',
                'phno'        =>'required|numeric',
              ];
      }

或者,如果id是表单字段的一部分而不是路径中的一部分,则可以使用请求输入法$this->input('id')访问它。

有关此内容的完整文档可在以下网址找到:https://laravel.com/docs/5.6/requests#retrieving-input