Правило проверки Laravel - PullRequest
       16

Правило проверки Laravel

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

Я работаю над веб-приложением, и мне нужно было проверить форму. Форма имеет два числовых поля, и мне нужно убедиться, что одно больше или равно другому.

Итак, я использовал эти правила.

[
     'adults' => ['required', 'numeric'],
     'people' => ['required', 'numeric', 'gte:adults'],
]

Все остальное работает, кроме одного случая. Скажите adults отсутствует или null, но people нет. Тогда я бы ожидал сообщение adults is required. Но вместо этого я получаю

InvalidArgumentException: The values under comparison must be of the same type.

Так что, похоже, gte rules сравнивает типы двух полей, даже если одно из них null с правилом required. Как я могу обойти это?

1 Ответ

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

Я думаю, что это проблема с порядком оценки правил.

Если сначала вычисляется adults, произойдет сбой с ошибкой adults is required.Однако, если people оценивается первым, он пытается сравнить его со взрослыми, выдавая ошибку.Вы можете решить эту проблему, добавив последнее правило:

[
     'adults' => ['required', 'numeric'],
     'people' => ['required', 'numeric', $request->has('adults') ? 'gte:adults' : ''],
]
...