我的验证规则如下所示:
$validator = Validator::make($request->all(), [
'name' => 'required|min:5|max:255',
'email' => [
'required',
'max:255',
'email',
Rule::unique('users')->ignore($id),
],
'password' => 'min:6|confirmed',
], [
'confirmed' => 'Hasło musi się zgadzać',
'unique' => 'Wpisz inny adres email, ten adres jest zajęty',
'required' => 'To pole jest wymagane.',
'min' => 'To pole musi mieć minimum :min znaków.',
]);
if ($validator->fails()) {
return redirect('/panel/users/'.$id.'/edit')
->withErrors($validator)
->withInput();
}
当我在没有更改密码的情况下编辑用户时,验证器将失败,并且' min'规则。正如您所看到的,验证器不需要密码,为什么要验证?
答案 0 :(得分:7)
使用可空的规则
'nullable|min:6|confirmed'
答案 1 :(得分:2)
你遇到了预期的行为。
<强>分钟:值强>
验证字段必须具有最小值。字符串,数字和文件的评估方式与大小规则相同。
根据docs。
您可以使用sometimes
规则
Validator::make($request->all(), [
'password' => 'sometimes|min:6|confirmed',
]
答案 2 :(得分:1)
您可以在这种情况下使用sometimes
:
$this->validate($request, [
'password' => 'sometimes|min:6',
]);
您可以详细了解sometimes
here:
在某些情况下,您可能希望对a执行验证检查 仅当输入数组中存在该字段时才输入字段。快点 完成此操作,将有时规则添加到规则列表中:
confirmed
似乎也可能导致problem。所以尝试手动完成:
'password' => 'required|min:6',
'password_confirmation' => 'required|min:6|same:password',
答案 3 :(得分:1)
看起来像你想要的。
$validator->sometimes('password', 'min:6|confirmed', function ($input) {
return (strlen($input->password) > 0);
});