Laravel中表单size验证数字示例详解

前言

要验证一个数字的确定值,看了表单验证文档

size:value验证的字段必须具有与给定值匹配的大小。对于字符串来说,value 对应于字符数。对于数字来说,value 对应于给定的整数值。对于数组来说, size 对应的是数组的 count 值。对文件来说,size 对应的是文件大小(单位 kb )。

写的验证规则是这样的

$data = ['age' => 9];
 
$validator = \Illuminate\Support\Facades\Validator::make($data, ['age' => 'required|size:9']);
 if ($validator->fails()) {
 dd($validator->errors()->first());
}
dd('pass');

我以为只要在验证的数据 9 是整数,他就会直接按数字的方式验证,结果直接打印了错误消息The age must be 9 characters.这个错误消息很明显的是提示字符串长度的,然后看了一下才发现还需要加上一个条件。numeric或者integer,

看源码直接跳到\Illuminate\Validation\Validator::fails()查看验证

主要验证的方法是这个$this->validateAttribute($attribute, $rule);

前面这些是过滤,验证文件上传的

这里动态拼接了一个方法,通过打印得知是validateSize

然后在这个类用的 trait 中找到这个方法ValidatesAttributes::validateSize

其实这里已经可以看到验证$hasNumeric

$hasNumeric里放的是这个

再看一下他是如何验证的

如果没有'numeric'或者'integer'会返回 null,就会导致$hasNumeric等于 false

所以就不会把这个当做数字验证了

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。

相关推荐:

Python中实现与PHP完全一致的ICU音译规则转换器

本文介绍如何使用PyICU在Python中精确复现PHPTransliterator::createFromRules()的音译行为,包括NFD/NFC规范化、去除非间距符号与标点、转小写等完整ICU规则链,确保跨语言环境下的字符串转换结果100%一致。 本文介绍如何使用pyicu在python中精...

php运行python脚本失败怎么解决

PHP调用Python失败主因是环境、权限、路径或错误捕获问题;需确认Python路径、用绝对路径调用、检查www-data用户权限、重定向stderr获取真实错误,并排查disable_functions等安全限制。 PHP运行Python脚本失败,通常不是PHP或Python本身坏了,而是执行环...

redis怎么使用php

问题:如何在php中使用redis?安装redisphp扩展。连接到redis服务器,使用redis类。存储和检索数据,支持字符串、散列、列表和集合等类型。使用其他命令,如检查键是否存在、删除键和设置键的过期时间。使用完redis后关闭连接。 如何在PHP中使用Redis Redis是一个高度可扩展...

优化 laravel 和 mysql 中的查询

优化Laravel中大型数据集的查询涉及多种提高性能和效率的策略。以下是您可以使用的一些关键技术: 高效使用口才 选择特定列:仅选择您需要的列,以最大程度地减少检索的数据量。 $users=User::select('id','name','email')->get(); EagerLoadi...

PHP 如何连接 MySQL 数据库?

PHP如何连接MySQL数据库 PHP通过连接MySQL客户端来操作MySQL数据库。当PHP程序执行时,它将连接到MySQL客户端,由客户端将PHP的请求传递给MySQL服务端。 MySQL服务端是一个数据库管理器,负责处理数据库操作,存储和管理数据。PHP程序通过客户端与服务端通信,向服务端发送...

德森PHP

DecenPHP已达到版本1.4。现在,使用PHP和MySQL/MariaDB可以轻松地在数据库中搜索文件或链接。 “但是,DecenPHP是什么?” DecenPHP提供了一种简单的方法来搜索网站和HTTP服务器上托管的文件。这可以通过MySQL数据库(仅存储链接和URL)或通过直接访问网站以检索...