Проверка Laravel требуется, если поле не равно - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть пользовательское правило проверки в моем контроллере:

$this->validate($request, [
    'currency' => [
        'required',
        'numeric',
        'min:0',
        'max:7'
    ],
    'price' => [
        'nullable',
        "required_if:currency, !=, 0",
        'numeric',
        'min:1',
        'max:1000000'
    ],
], $messages);

Почему работает в required_if:currency, ==, 0 и не работает в этом required_if:currency, !=, 0 случае?

В моем случае price полетребуется только тогда, когда currency значение поля не равно 0

Я также устал:

required_unless,currency,0
required_unless:currency,0

1 Ответ

0 голосов
/ 18 декабря 2018

required_if:currency, ==, 0 работает, потому что значение currency должно быть равно любому из значений, следующих за именем значения (в данном случае currency).Другими словами, price требуется в этом случае, если валюта либо ==, либо 0.Таким образом, == не означает обычные "равные" в этом случае.Он просто принимается как обычное строковое значение.Именно поэтому required_if:currency, !=, 0 не работает так, как вы ожидали.

Чтобы сделать поле price обязательным, только если значение поля currency не равно 0, вы можете использовать required_unless:currency,0,Другими словами, price всегда требуется, если currency не равно 0.

...