Laravel验证gte规则

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

我正在开发一个Web应用程序,我需要验证表单。表单有两个数字字段,我需要确保一个大于或等于另一个。

所以我使用了这些规则。

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

除了一个案例外,其他一切都在运作。说adults缺失或nullpeople不是。然后我会期待adults is required消息。但相反,我得到了

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

所以似乎gte规则比较两个领域的类型,即使一个是nullrequired规则。我怎么能绕过这个?

validation laravel-validation laravel-5.8
1个回答
0
投票

我认为这是规则评估顺序的问题。

如果首先评估adults,它会因adults is required错误而失败。但是,如果首先评估people,它会尝试将其与成人进行比较,从而引发错误。您可以通过有条件地添加最后一条规则来解决此问题:

[
     'adults' => ['required', 'numeric'],
     'people' => ['required', 'numeric', $request->has('adults') ? 'gte:adults' : ''],
]
© www.soinside.com 2019 - 2024. All rights reserved.