Laravel验证array规则允许空字符串拒null,是Bug还是预期行为?
Laravel array验证规则:空字符串通过、null失败是Bug还是预期行为?
当使用Laravel的array验证规则时,会出现两种不同的验证结果:
- 字段值为空字符串时,验证通过:
$validated = validator( [ "data" => "" ], [ "data" => "array" ] )->validate();
- 字段值为
null时,验证失败(符合多数开发者预期):
$validated = validator( [ "data" => null ], [ "data" => "array" ] )->validate();
这是预期行为,和Laravel验证器的底层处理逻辑直接相关:
array验证规则的核心判定逻辑中,会将空字符串视为「空的合法输入」,因此会通过验证;- 而
null会被明确判定为非数组类型,所以验证失败。
如果需要严格要求字段必须是实际的数组(同时拦截空字符串、null以及空数组),可以结合filled规则一起使用:
$validated = validator( [ "data" => "" ], [ "data" => "array|filled" ] )->validate();
内容的提问来源于stack exchange,提问作者RawSlugs
相关产品推荐
相关产品推荐

