Проверка Laravel: условие required_with или required_with_all всегда проходит - PullRequest
0 голосов
/ 17 сентября 2018

Похожий пост был сделан здесь , но все равно он не работает в моем случае.

$v = \Validator::make($keys, [
            'overall' => 'required',
            'taste' => 'sometimes|required_with_all:freshness, quantity, value',
            'freshness' => 'sometimes|required_with_all:taste, quantity, value',
            'quantity' => 'sometimes|required_with_all:taste, freshness, value',
            'value' => 'sometimes|required_with_all: taste, quantity, freshness'
        ]);

dd($v->fails()); //-> false should be true

Я пытаюсь обобщить, что я делаю:

  • У меня есть система рейтинга для различных типов предложений
  • всегда требуется «общий», не имеет значения, какой тип предложения это.
  • Предложение, как еда, имеет рейтингтипы «общее, вкус, свежесть, количество и ценность»
  • Однако, поскольку существует много типов предложений «вкус, свежесть, количество и ценность», это не единственные типы рейтинга.В будущем их будет больше (например, рейтинг электронной книги (вы не оцените вкус и т. Д.))
  • «вкус, свежесть, количество и ценность» не являются обязательными, но если существует только один, вседолжен быть обязательным.

Я пытался сделать это с помощью required_with, но он не работает.

Мой пример массива:

array:4 [
  "overall" => 0
  "freshness" => 1
  "quantity" => 2
  "value" => 3
]

С отсутствующим «вкусом».

Так что же я делаю не так?

Если я полностью понимаю документы:

required_with_all: foo, bar,... Проверяемое поле должно присутствовать только в том случае, если присутствуют все остальные указанные поля.

Это означает, что:

Например, "вкус" => 'иногда | required_with_all: свежесть, количество, значение 'означает, что при наличии свежести, количества, значения и отсутствии параметра «вкус» возникает ошибка проверки.

Но это не так ...

1 Ответ

0 голосов
/ 17 сентября 2018

иногда : поле будет проверено, только если оно присутствует в массив данных.

Так как taste не представлен в вашем примере массива, он не будет проверяться. Попробуйте без sometimes

'taste' => 'required_with_all:freshness, quantity, value'

...