Требуется проверка Laravel, если поле не равно

В моем контроллере есть настраиваемое правило проверки:

$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
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
3
0
9 357
3

Ответы 3

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

Так что == в данном случае не означает обычных «равных». Это просто принято как строковое значение. Вот почему required_if:currency, !=, 0 не работает так, как вы ожидали.

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

Другими словами, всегда требуется price, если только currency не равен 0.

В моем случае тоже не работает, но все предлагают такой формат, как и вы.

Shamseer Ahammed 01.06.2019 21:46

Я бы посоветовал вам использовать

required_unless:currency,0 according to [1]: https://laravel.com/docs/5.5/validation#rule-required-unless

Вы можете использовать это:

Rule::requiredIf($request->get('currency') != 0)

Другие вопросы по теме