我有一个表单,它位于编辑页面,其中包含字段名称电子邮件。现在我不想查看电子邮件验证,这是独一无二的。我已将验证放在规则中,例如'电子邮件' =>'唯一:用户',它完全适用于创建页面。所以我想在编辑页面上忽略该验证。我必须在更新函数的参数中使用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]
答案 0 :(得分:2)
只传递当前记录的primary key
,验证器将跳过表中的那一行。
'email'=>'unique:users,email,'.$id,
其中,
电子邮件是field name
。 $id
是存储primary key
的变量。
答案 1 :(得分:0)
因为您正在使用FormRequest类,所以$ id变量不能直接使用。
但是,通过表单输入或路由参数,此类已经可以使用相同的数据,具体取决于您的结构。
因此,如果路线类似于myapp/user/234
,那么您可以使用$this->route('user')
这会使您的规则看起来像:
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