validator.js icon indicating copy to clipboard operation
validator.js copied to clipboard

How to use "required_if" ?

Open vafrcor opened this issue 8 years ago • 1 comments

I have tried using "required_if" rule but validation return as "failed". Rule:

'status':'required|in:lifetime,limited',
'date':'required_if:status,limited|in:01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31'

If status field value is lifetime, rule for date field still executed as required field.

Any idea how to solve this problem? Thank you.

vafrcor avatar Aug 25 '17 04:08 vafrcor

@vafrcor I tested this and seems the functionality is fine.

Test code:

var validator = require('../src/validator');

var person = {
      status: 'lifetime',
    },
    rules = {
      status:'required|in:lifetime,limited',
      date:'required_if:status,limited|in:01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31'
    };

console.log('Object to be tested:');
console.log(JSON.stringify(person, null, 4) + '');
console.log('Validation rules:');
console.log(JSON.stringify(rules, null, 4) + '');
console.log('Result:');
console.log(JSON.stringify(validator.validate(person, rules), null, 4));

And result is:

Object to be tested:
{
    "status": "lifetime"
}
Validation rules:
{
    "status": "required|in:lifetime,limited",
    "date": "required_if:status,limited|in:01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31"
}
Result:
{
    "status": "success",
    "rejects": []
}

Could you please run the test and post results here?

ppoffice avatar Aug 26 '17 04:08 ppoffice