如果为空,Laravel 密码验证将在“最小长度”上失败
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/43873103/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Laravel password validation fail on "min length" if empty
提问by kuchar
My validator rule looks like this:
我的验证器规则如下所示:
$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();
}
When i edit user without change password, validator fails with 'min' rule. As you can see my validator doesnt require password, so why it validating?
当我在不更改密码的情况下编辑用户时,验证器因“最小”规则而失败。正如您所看到的,我的验证器不需要密码,那么为什么要验证呢?
采纳答案by Adam W.
It's look like what you want.
它看起来像你想要的。
$validator->sometimes('password', 'min:6|confirmed', function ($input) {
return (strlen($input->password) > 0);
});
回答by user947668
use nullable rule
使用可为空规则
'nullable|min:6|confirmed'
回答by Ian
You are coming across expected behaviour.
您遇到了预期的行为。
min:value
最小值:值
The field under validation must have a minimum value. Strings, numerics, and files are evaluated in the same fashion as the size rule.
验证中的字段必须具有最小值。字符串、数字和文件的计算方式与大小规则相同。
as per the docs.
根据文档。
You can use the sometimes
rule
你可以使用sometimes
规则
Validator::make($request->all(), [
'password' => 'sometimes|min:6|confirmed',
]
回答by Alex Harris
You can use sometimes
for this case:
您可以sometimes
在这种情况下使用:
$this->validate($request, [
'password' => 'sometimes|min:6',
]);
You can read more about sometimes
here:
您可以sometimes
在此处阅读更多信息:
In some situations, you may wish to run validation checks against a field only if that field is present in the input array. To quickly accomplish this, add the sometimes rule to your rule list:
在某些情况下,您可能希望仅当输入数组中存在该字段时才对该字段运行验证检查。要快速完成此操作,请将有时规则添加到您的规则列表中:
confirmed
seems as if it can also cause a problem. So try doing it manually:
confirmed
似乎它也会引起问题。因此,请尝试手动执行此操作:
'password' => 'required|min:6',
'password_confirmation' => 'required|min:6|same:password',