Laravel 5.3 Validation Fails when Variables are Null

51,636

Solution 1

Add nullable rule:

'firstName' => 'string|max:255|nullable',
'lastName' => 'string|max:255|nullable'

The field under validation may be null. This is particularly useful when validating primitive such as strings and integers that can contain null values.

Solution 2

When you want something to be required but the value itself can be empty, like an empty string.

Validator::make($postData, [
          'firstName'           => 'present|string|max:255|nullable',
          'lastName'            => 'present|string|max:255|nullable'
        ]);

Useful in scenarios like "notes", which can be emptied by removing the input field from all its text and hit save.

Share:
51,636
Neel
Author by

Neel

Previously know as @blackops_programmer. I know, it was a pretty lame Display name.

Updated on July 09, 2022

Comments

  • Neel
    Neel almost 2 years

    Since upgrading laravel from 5.1 to 5.3, I've got couple of odd issues with Validation.

    When I post a data like this:

    firstName    null
    

    And the validation rules are like this:

    $validator = Validator::make($postData, [
                  'firstName'           => 'string|max:255',
                  'lastName'            => 'string|max:255'
                ]);
    

    The above fails with the messages something like "The XYZ must be a string.". What I don't understand is:

    1. Why is the validation failing when it is not set as required? Meaning, it should ignore it and not throw an error if the value is empty, right?

    2. Why does the validation fail if the value is set as null?

    3. Why does the validation fail when the parameter is not sent at all? (like the lastName which is not posted at all)

    Has something changed in Laravel 5.3 validations?

  • Neel
    Neel over 7 years
    Perfect. That fixed it. Thank you! I will accept your answer in 10 mins once SO allows me to. A quick question, did this change in laravel 5.3? Cuz I did not get this issue in 5.1 and I never added nullable in validation rules.
  • Alexey Mezenin
    Alexey Mezenin over 7 years
    @Neel don't see any code for nullable rule in 5.2. It's in 5.3 only. So I guess they changed something in validation.
  • Neel
    Neel over 7 years
    That makes sense. Thank you so much @Alexey for pointing this out. It was very helpful!
  • Berni
    Berni almost 2 years
    doesn't work for dates