Laravel 10数值输入范围验证问题:min/max规则不符合需求
Laravel 10 非整数数值范围验证的内置解决方案
你遇到的问题是因为Laravel的min/max规则在处理字符串形式的数值时,默认会校验字符串长度而非数值大小。比如max:1会被解析为“字符长度不超过1”,所以0.3333(长度5)会验证失败。
不需要自定义规则,Laravel内置了专门针对数值范围的验证规则:
- 使用
gte和lte规则gte表示“大于等于”,lte表示“小于等于”,专门用于数值大小比较:
$request->validate([ 'ratio' => 'required|numeric|gte:0.01|lte:1', ]);
- 使用
between规则
如果需要指定数值区间,between规则同样支持非整数范围:
$request->validate([ 'ratio' => 'required|numeric|between:0.01,1', ]);
这两个规则都会将输入解析为数值进行比较,提交ratio=0.3333时会正确判断其在0.01到1的区间内,验证通过。
内容的提问来源于stack exchange,提问作者jkoop
相关产品推荐
相关产品推荐

