Как использовать required_if для полей массива файлов с массивом для первого аргумента? - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть с массивом image_file (image_file[1], image_file[2]).Они являются вводом типа файла.Эти изображения требуются только в том случае, если для 2. 2. 1003 *

определен другой массив полей (offerition_type). Например:

  • , если proposition_type[1] == 2, image_file[1] необходимо заполнить;
  • , если proposition_type[2] == 1, image_file[2] не нужно заполнять.

Я пытался использовать следующие правила:

$rules = [
    (...)
    'image_file.*' => 'required_if:proposition_type.*,2|image',
];

Но любая ошибка наПоля image_file поднимаются.

Более того, я использовал валидатор required на своем image_file.*, и здесь снова не возникает ошибка.

Может быть, у кого-то есть решение для этого?Или может я что то не так делаю?:)

Спасибо!

1 Ответ

0 голосов
/ 09 апреля 2019

Если вы хотите создать более сложное условие для правила required_if, вы можете использовать метод Rule :: requiredIf. Этот метод принимает логическое значение или замыкание. Когда передано Закрытие, Закрытие должно возвращать true или false, чтобы указать, требуется ли проверяемое поле. Нечто подобное может работать для вас:

 Validator::make($request->all(), [
 'image_file[1]' => Rule::requiredIf(function () use ($request) {
     if($request->proposition_type[1] == 2)
        return true;
     else
        return false;
 }),
 'image_file[2]' => Rule::requiredIf(function () use ($request) {
     if($request->proposition_type[2] == 1)
        return false;
     else
        return true;
 }),
]);
...