Laravel Правила проверки `lt` и 'gt', только если присутствуют целевые поля - PullRequest
1 голос
/ 16 июня 2020

У меня есть два целочисленных поля для проверки в моем запросе, min_height и max_height, оба из которых являются необязательными, но имеют min_height, меньшее, чем max_height и max_height, желающие (конечно) быть больше чем min_height.

Использование следующего правила проверки

'min_height' => ['nullable', 'integer', 'lt:max_height'],
'max_height' => ['nullable', 'integer', 'gt:min_height'],

Это, конечно, дает мне ошибку, когда один из них присутствует, но не другой, поскольку lt / gt проверка правила проверки по полю запроса null.

Как я могу сделать так, чтобы lt / gt проверялось только при наличии другого поля? Есть ли способ добиться этого с помощью встроенных правил проверки или мне нужно реализовать собственный валидатор?

ОБНОВЛЕНИЕ

Вероятно, я недостаточно ясно понял: мои два поля допускают значение NULL и независимы друг от друга , поэтому можно получить min_height, а не max_height, и наоборот: это делает правила типа required_with не подходящими для моего варианта использования.

Ответы [ 2 ]

1 голос
/ 16 июня 2020

Вы можете попробовать использовать required_with условное правило. Например, ваше состояние будет

'min_height' => 'required_with:max_height|lt:max_height',
'max_height' => 'required_with:min_height|gt:min_height',
0 голосов
/ 16 июня 2020

Вы можете использовать sometimes для первого параметра. взгляните на: https://laravel.com/docs/7.x/validation#conditionally -правила добавления

...