Laravel `lt`和'gt'验证规则只有在目标字段存在的情况下才会生效.

问题描述 投票:1回答:2

我的请求中有两个整数字段需要验证。min_heightmax_height,两者都是可选的,但具有 min_height 低于 max_heightmax_height 胜过 min_height.

使用验证规则如下

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

当其中一个存在而另一个不存在时,这当然会给我带来错误,因为当 ltgt 校验规则检查 null 请求字段。

我怎么能有 ltgt 有什么方法可以用内置的验证规则实现这个功能,或者我必须实现一个自定义的验证器?

更新

可能我说得不够清楚。我的两个字段都是可空的,而且是相互独立的。因此,它是确定的,收到 min_height 而不是 max_height 反之亦然:这就使得这样的规则 required_with 不适合我的用例。

laravel validation eloquent optional rules
2个回答
1
投票

你可以尝试使用 所需的_with 条件规则。例如,你的条件是

'min_height' => 'required_with:max_height|lt:max_height',
'max_height' => 'required_with:min_height|gt:min_height',

0
投票

您可以使用 sometimes 在第一个参数上,看一看。https:/laravel.comdocs7.xvalidation#conditionally-adding-rules。

© www.soinside.com 2019 - 2024. All rights reserved.