验证器
如果需要验证的内容不多建议在控制器的方法里进行验证,如果需要验证的内容比较多可以在控制器的前置方法里进行验证;
public function test( $cat_id, $name,$age,File $file) {
validate($name,'名称')->required()->length(4,10);
validate($age,'年龄')->min(14)->required();
validate($cat_id,'分组id')->between(1,100);
validate($file)->msg('文件不可为空')->fileSize(1000*1024*1024);
validateParam("id",'id')->required();
}
验证方式
/**
* 检查参数
*
* @param string $name 参数
* @param string $as_name 显示名称 默认空
* @param bool $throw 是否抛异常 默认 true
*
* @return \rap\web\validate\Validate
*/
function validate($name, $as_name='', $throw = true) {
return \rap\web\validate\Validate::param($name, $as_name, $throw);
}
/**
* 检查 request 里的参数
*
* @param string $name request 中获取的参数名称
* @param string $as_name 显示名称 默认空
* @param bool $throw 是否抛异常 默认 true
*
* @return \rap\web\validate\Validate
*/
function validateParam($name, $as_name = '', $throw = true) {
默认遇到任何验证不通过,都会抛出异常如果不想抛出异常指向验证结果
$vali = validate($name,'名称',false)->required()->length(4,10);
if(!$vali->isValidate){
$msg = $vali->msg;
}
msg :验证不通过是显示的错误消息 没有这个方法的话会走默认消息
默认 msg 是可以走 lang 多语言下的validate 下的配置的
validate($file)->msg('文件不可为空')->fileSize(1000*1024*1024);
validateRole:表示验证权限,如果没有通过默认会报你没有权限
validateRole($name,'name') 相当于 $validate($name,'name')->msg('role')
所有验证方法
方法 | 含义 |
---|---|
required | 必须 |
isTrue | 结果是 true |
accepted | 接受 ['1', 'on', 'yes'] |
isDate | 是否是一个有效日期 |
isAlpha | 只允许字母 |
isAlphaNum | 只允许字母和数字 |
isAlphaDash | 只允许字母、数字和下划线 破折号 |
isChs | 只允许中文 |
isChsAlpha | 只允许中文字母 |
isChsAlphaNum | 只允许中文字母数子 |
isChsDash | 只允许中文、字母、数字和下划线及破折号- |
activeUrl | 检查有效可访问的域名或ip |
url | 有效的网址 |
float | 检查浮点数 |
number | 检查数字 |
integer | 检查整数 |
检查邮箱 | |
boolean | 检查boolean |
isArray | 检查数组 |
file | 检查文件 |
fileExt | 检查文件后缀 |
fileMime | 检查文件类型 |
fileSize | 检查文件大小 |
image | 检查是否图片 |
confirm | 验证是否和某个字段的值一致 |
different | 验证是否和某个字段的值不同 |
egt | 验证是否大于等于 |
gt | 验证是否大于 |
elt | 验证是否小于等于 |
lt | 验证是否小于 |
eq | 验证是否等于 |
dateFormat | 验证时间格式 |
requireIfEq | 当两个值相等时必须 |
requireWhen | 当回调为真是必须 |
requireWith | 当另一个值存在时必须 |
in | 检查在范围内 |
notIn | 检查不在范围内 |
min | 最小值 |
max | 最大值 |
between | 在两值之间 |
notBetween | 不在两值之间 |
length | 长度范围 |
regex | 符合正则 |
regex | 符合正则 |
unique | 检查数据库是唯一值 |
allowIp | 允许的ip |
denyIp | 禁止的ip |
before | 验证日期在前 |
after | 验证日期在_后 |
expire | 验证有效期 |
特殊说明unique 检查数据库是唯一值如 book 表的 code 为唯一值验证方法
validate($code,'识别码')->required()->unique(Book::class,'code');
可能有部分方法没有经过完整测试,大家写的过程中还是需要自己试下的,
上一篇:多语言 下一篇:Redis 分布式锁