Skip to content

RequiredIf validator with multiple values fails validating boolean 0 #36952

@Norgul

Description

@Norgul
  • Laravel Version: 8.36.2
  • PHP Version: 7.4.1
  • Database Driver & Version: not related to the issue

Description:

Since boolean validation rule accepts and validates several boolean value variants I wanted to enable required_if validator to accept and validate against those values as well, however it fails having 0 as a value.

Steps To Reproduce:

Correct behavior 1:

// Validation
'some_bool_field' => 'required|boolean',
'check_against_1' => 'required_if:some_bool_field,true',
'check_against_2' => 'required_if:some_bool_field,false',

// Payload
'some_bool_field' => true, // will trigger 'check_against_1'
'some_bool_field' => false, // will trigger 'check_against_2'

Correct behavior 2:

// Validation
'some_bool_field' => 'required|boolean',
'check_against_1' => 'required_if:some_bool_field,1',
'check_against_2' => 'required_if:some_bool_field,0',

// Payload
'some_bool_field' => 1, // will trigger 'check_against_1'
'some_bool_field' => 0, // will trigger 'check_against_2'

Invalid behavior:

// Validation
'some_bool_field' => 'required|boolean',
'check_against_1' => 'required_if:some_bool_field,1,true',
'check_against_2' => 'required_if:some_bool_field,0,false',

// Payload
'some_bool_field' => true, // will trigger 'check_against_1'
'some_bool_field' => false, // will trigger 'check_against_2'
'some_bool_field' => 1, // will trigger 'check_against_1'

'some_bool_field' => 0, // should trigger 'check_against_2', but triggers both

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions