在Laravel表格输入验证中,您可以指定给定输入字段的最小和最大长度。
$inputRules = [
'postCode' => 'min:3|max:8'
];
true
false
false
但是如果我对一个数字做同样的事情,它将验证输入是否小于或大于输入,然后返回。
$inputRules = [
'cv2' => 'min:3|max:4'
];
false
true
false
true
我实际上想要验证数字 length 而不是它的数值。我无法弄清楚如何做到这一点。谷歌一直没有帮助,或者我没有找到正确的东西。
有人有过这方面的经验吗?
编辑:我已经回答了我自己的问题。我错过了Laravelsdigits_between
。
答案 0 :(得分:13)
就像一个白痴,我错过了Laravels digits_between
验证者规则。我发誓我已经扫过这些规则了,但我们在这里。
谢谢大家的帮助。
$inputRules = [
'cv2' => 'required|numeric|digits_between:3,4'
];
答案 1 :(得分:6)
这是Laravel的size
,min
和max
验证的预期行为。你无法改变它。
对于字符串数据,value对应于字符数。对于数字数据,value对应于给定的整数值。对于文件,size对应于文件大小(以KB为单位)。
要解决此问题,您必须创建custom validation rule。 像这样:
Validator::extend('min_length', function($attribute, $value, $parameters){
return strlen($value) >= $parameters[0];
});
Validator::extend('max_length', function($attribute, $value, $parameters){
return strlen($value) <= $parameters[0];
});
你可以用同样的方式使用它们:
'cv2' => 'min_length:3|max_length:4'
答案 2 :(得分:0)
对于数量的长度,您必须使用大小,但不能在其中放置范围。因此,最好的办法是进行自定义验证。 以下是laravel中的文档:http://laravel.com/docs/5.0/validation#custom-validation-rules
一个例子:
Validator::extend('minsize', function($attribute, $value, $parameters)
{
return strlen($value) >= $parameters[0];
});
使用maxsize也一样。