如何添加验证字段接受数字和null?(Laravel 7. x)



我想在is_passtrue时将score的值存储为一个数字。如果is_passfalse,那么score应该是null。所以我为score

添加了如下验证
'score' => 'required_if:is_pass,true|numeric'

但是当is_passfalse时,我有一个问题,然后它也预期score值为numeric。如何解决这个问题?除了自定义验证之外,还有其他选择吗?我用的是laravel 7.

您应该定义一个变量来保持您的规则。然后根据条件改变你的规则。

if((bool) $request->is_pass === true)
$rules['score'] = 'required_if:is_pass,true|numeric';
else
$rules['score'] = 'required_if:is_pass,false|null';

可以在这里和这里使用numericnullable验证

'score' => 'nullable|numeric'

这将检查值是否为空,然后应用数字验证,否则跳过验证并接受它为空。

最新更新