第一次我写了一个普通的验证,然后到了修改的时候一直报错,说是字段不能重复!
//验证规则
public function rules()
{
return [
'name' => 'required|between:2,100|unique:addresses,name',
'url' => 'required|between:2,200',
'password' => 'nullable|between:1,150',
'state' => 'required',
];
}
//错误信息处理
public function messages()
{
return [
'name.required' => '游戏名称不能为空',
'name.unique' => '游戏名称已存在',
'url.required' => '下载地址不能为空',
'state.required' => '栏目状态不能为空',
'name.between' => '游戏名称必须在2到100个字符之间',
'url.between' => '游戏地址必须在2到200个字符之间',
'password.between' => '下载密码必须在1到150个字符之间',
];
}
后面发现,我的验证规则只写了添加请求,并没有写修改的规则,所以需要添加
//验证规则
public function rules()
{
//这里直接读取的是路由(route)提供的id
$id = $this->route('address');
return [
//此处注意,name后面一定要加逗号(,)不然他会把name和ID拼接,从而找不到字段报错
'name' => 'required|between:2,100|unique:addresses,name,'.$id,
'url' => 'required|between:2,200',
'password' => 'nullable|between:1,150',
'state' => 'required',
];
}
//错误信息处理
public function messages()
{
return [
'name.required' => '游戏名称不能为空',
'name.unique' => '游戏名称已存在',
'url.required' => '下载地址不能为空',
'state.required' => '栏目状态不能为空',
'name.between' => '游戏名称必须在2到100个字符之间',
'url.between' => '游戏地址必须在2到200个字符之间',
'password.between' => '下载密码必须在1到150个字符之间',
];
}
这样就可以保证添加时的验证和修改时候的免验证了!
好了,教程到此结束,祝大家技术越来越好!
在laravel中进行表单验证时遇到问题,当尝试修改记录时,由于未正确设置规则,导致遇到'字段不能重复'的错误。解决办法是为修改操作单独添加验证规则,从而在更新时排除当前记录的唯一性验证。完成这个调整后,添加和修改操作都能正确进行。

141

被折叠的 条评论
为什么被折叠?



