zoukankan      html  css  js  c++  java
  • Easyswoole验证器Validate—自定义错误信息

    Easyswoole验证器Validate—自定义错误信息

           最近公司在用easyswoole开发项目,在用官方自带基础的验证类时,遇到点问题,已经解决,现记录下来。

           因为工作中需要用到的数据校验,除了对传入的字段做基础的校验,还有其他比较复杂的校验,需要自定义错误信息。参照官方文档的写法

     

    其实就是EasySwooleValidateRule中的func方法中的第二个参数$msg在这儿并没有起到作用

    分析原因,追溯到源码去看:

    EasySwooleValidateError类中:

    1)获取错误信息:$validate->getError()->__toString(这个是追溯问题的源头,因为返回的信息不是我们预先想要的)

     

    2)获取触发规则消息

    3)构造方法

    4)这个地方是Error定义的默认错误信息

    最后发现问题出在EasySwooleValidateValidate的validate()方法中这段代码:

     

    原来官方的代码是:拿那个func方法中的闭包返回的值$result,如果$result为true,就说明验证通过,不会显示错误信息。

    否则,经过strval方法得到$resultErr,作为errorRuleMsg去判断,如果$resultErr存在且非空非零,就使用$reultErr来作为错误信息,

    否则在就用官方默认func对应的错误信息”:fieldName自定义验证失败”

    所以,如果要使用自定义的错误信息,就只能类似这样写:

     下面是在控制器中的写法,供参考

    $dids = $this->request()->getRequestParam('dids');
    $pid = $this->request()->getRequestParam('id');
    $disaster_id = $this->request()->getRequestParam('disaster_id');
    $validate=new Validate();
    $validate->addColumn('id','表单元素ID')->required('不能为空')->integer('必须是整数');
    $validate->addColumn('disaster_id','灾难ID')->required('不能为空')->integer('必须是整数');
    $dids_arr=explode(',',$dids);
    $validate->addColumn('dids','部门ID')->required('不能为空')->regex("/^d+(,d+)*$/",'有多个的话,用英文逗号隔开')->func(function ($params,$key) use($dids_arr){
    foreach ($dids_arr as $k=>$v){
    $form_value_info=TagDepModel::create()->where('did',$v)->get();
    if(!$form_value_info){
    return "填写的部门ID不存在";
    }
    }
    return true;
    });
    if (!$this->validate($validate)){
    return $this->returnJson(static::PARAMS_BAD,[],$validate->getError()->getFieldAlias().$validate->getError()->__toString());
    }

     

     

     

     

     

     

     

  • 相关阅读:
    Eclipse本地创建新的GIT分支,并推送至远程Git分支
    将持久态数据转化为游离态数据代码实现
    Java根据当前日期获得昨天的当前日期代码实现
    @RequestMapping和@GetMapping区别
    炫酷的banner.txt
    小程序colorUI框架初步使用教程
    Java Spring boot element ui activiti前后端分离,流程审批,权限管理框架
    Activiti (一)
    CSS Clip 裁剪
    @SpringBootApplication的使用
  • 原文地址:https://www.cnblogs.com/hld123/p/12874425.html
Copyright © 2011-2022 走看看