我想在is_pass
为true
时将score
的值存储为一个数字。如果is_pass
是false
,那么score
应该是null
。所以我为score
'score' => 'required_if:is_pass,true|numeric'
但是当is_pass
是false
时,我有一个问题,然后它也预期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';
可以在这里和这里使用numeric
和nullable
验证
'score' => 'nullable|numeric'
这将检查值是否为空,然后应用数字验证,否则跳过验证并接受它为空。