最近在做表单验证的时候,本想着验证一个整数是否在某个范围内,发现一直验证失败,通过查看源码才发现还要加入条件才能验证,下面将讲解需要注意地方。
刚开始时验证term这个值是否在1-24之间,下面举例说明:
1 | $validator = Validator::make($data, [ |
$data
传入term=3
,发现验证失败,查看手册没发现有什么不对的地方,于是开始查找源代码,找到该验证的源码如下:
第一个方法requireParameterCount
,只是验证参数的数量的方法,没有影响值的大小,再往下看第二个方法getSize
,传入$attribute
和$value
,源代码如下:
这个方法可以大概理解成根据不同的类型的变量获取相对应的值,值得注意的是打圆圈的地方,该判断不是单单判断是否是数值,还判断了$hasNumeric
这个值,这个值获取的方法是hasRule
,这个方法有一个参数需要注意,$this->numericRules
传的是[‘Numeric’, ‘Integer’]
,通过该方法再找到getRule
方法;源码如下:
通过源码可以知道,该方法是获取验证规则的变量,没有会返回null;到这里终于明白,要验证term是否在1-24之间,必须先验证term是否是数值,只有符合是数值的前提,才验证term的范围,修改后的代码如下:
1 | $validator = Validator::make($data, [ |
最后终于能正常验证了,所以遇到Laravel手册不能解决的问题,最好还是多看看源码,通过查看源码总能找到问题的解决办法。
最后更新: 2018年01月06日 17:01
原始链接: http://blog.minhow.com/articles/laravel/form-validation/