Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel password validation fail on "min length" if empty

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?

like image 503
kuchar Avatar asked May 09 '17 14:05

kuchar


Video Answer


2 Answers

use nullable rule

'nullable|min:6|confirmed'
like image 193
user947668 Avatar answered Oct 08 '22 11:10

user947668


It's look like what you want.

$validator->sometimes('password', 'min:6|confirmed', function ($input) {
    return (strlen($input->password) > 0);
});
like image 38
Adam W. Avatar answered Oct 08 '22 11:10

Adam W.