Laravel验证规则required_if另一个字段值在数组中,不起作用

时间:2019-09-24 10:36:14

标签: laravel validation laravel-validation

假设我有表单向导,我想根据向导索引分隔验证规则,如果wizard_index值为firstall或以下情况,我想具有以下验证规则:如果wizard_index不存在。

$rules =  [
    'wizard_index' => ['required', 'string', 'in:first,second,third,all'],
    'name' => ['required_if:wizard_index,in:first,all', 'string', 'max:50', 'min:3'],
    'about' => ['required_if:wizard_index,in:first,all', 'string', 'max:500', 'min:10'],
    'size' => [
        'required_if:wizard_index,in:first,last', 'string',
        'in:0 - 1,2 - 10,11 - 50,51 - 200,201 - 500,"501 - 1,000","1,001 - 5,000","5,001 + more"'
    ]
];

以上验证规则均无效,但如果我删除in:并仅检查一个值,则该参数有效。

最后一点是我想从required删除wizard_index规则,并为wizard_index不存在的其他字段添加另一个额外条件。

1 个答案:

答案 0 :(得分:1)

只需单独添加这些规则,就像这样:

$rules =  [
  'wizard_index' => ['nullable', 'string', 'in:first,second,third,all'],
  'name' => ['required_if:wizard_index,first', 'required_if:wizard_index,all', 'required_without:wizard_index', 'string', 'max:50', 'min:3'],
  'about' => ['required_if:wizard_index,first', 'required_if:wizard_index,all', 'required_without:wizard_index', 'string', 'max:500', 'min:10'],
  'size' => [
    'required_if:wizard_index,first', 'required_if:wizard_index,all', 'required_without:wizard_index', 'string',
    'in:0 - 1,2 - 10,11 - 50,51 - 200,201 - 500,"501 - 1,000","1,001 - 5,000","5,001 + more"'
  ]
];