验证器

如果需要验证的内容不多建议在控制器的方法里进行验证,如果需要验证的内容比较多可以在控制器的前置方法里进行验证;

  1. public function test( $cat_id, $name,$age,File $file) {
  2. validate($name,'名称')->required()->length(4,10);
  3. validate($age,'年龄')->min(14)->required();
  4. validate($cat_id,'分组id')->between(1,100);
  5. validate($file)->msg('文件不可为空')->fileSize(1000*1024*1024);
  6. validateParam("id",'id')->required();
  7. }

验证方式

  1. /**
  2. * 检查参数
  3. *
  4. * @param string $name 参数
  5. * @param string $as_name 显示名称 默认空
  6. * @param bool $throw 是否抛异常 默认 true
  7. *
  8. * @return \rap\web\validate\Validate
  9. */
  10. function validate($name, $as_name='', $throw = true) {
  11. return \rap\web\validate\Validate::param($name, $as_name, $throw);
  12. }
  1. /**
  2. * 检查 request 里的参数
  3. *
  4. * @param string $name request 中获取的参数名称
  5. * @param string $as_name 显示名称 默认空
  6. * @param bool $throw 是否抛异常 默认 true
  7. *
  8. * @return \rap\web\validate\Validate
  9. */
  10. function validateParam($name, $as_name = '', $throw = true) {

默认遇到任何验证不通过,都会抛出异常如果不想抛出异常指向验证结果

  1. $vali = validate($name,'名称',false)->required()->length(4,10);
  2. if(!$vali->isValidate){
  3. $msg = $vali->msg;
  4. }

msg :验证不通过是显示的错误消息 没有这个方法的话会走默认消息


默认 msg 是可以走 lang 多语言下的validate 下的配置的

  1. validate($file)->msg('文件不可为空')->fileSize(1000*1024*1024);

validateRole:表示验证权限,如果没有通过默认会报你没有权限


  1. 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检查整数
email检查邮箱
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 分布式锁