如果为空,Laravel密码验证在"最小长度"上失败

kuc*_*har 3 php validation laravel

我的验证规则如下所示:

$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();
    }
Run Code Online (Sandbox Code Playgroud)

当我在没有更改密码的情况下编辑用户时,验证器以"min"规则失败.正如您所看到的,验证器不需要密码,为什么验证?

use*_*668 8

使用可空的规则

'nullable|min:6|confirmed'
Run Code Online (Sandbox Code Playgroud)


小智 4

它看起来像你想要的。

$validator->sometimes('password', 'min:6|confirmed', function ($input) {
    return (strlen($input->password) > 0);
});
Run Code Online (Sandbox Code Playgroud)