Правило проверки Laravel required_if другое значение поля в массиве, не работает - PullRequest
0 голосов
/ 24 сентября 2019

Предположим, у меня есть мастер форм, я хочу разделить правила проверки на основе индекса мастера, предположим, что я хочу иметь следующие правила проверки, если значение wizard_index равно first или all или если 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 Ответ

1 голос
/ 24 сентября 2019

Просто добавьте отдельно эти правила, что-то вроде этого:

$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"'
  ]
];
...