yii 控制器中检查请求参数是否正确

YII 中仅提供了model中进行规则验证,如何在控制器中完成参数的验证呢?

我说的不一定是验证post请求,可能是一个get请求或者update请求。 此时想方便的检查请求的参数是否符合规范,该如何处理?

阅读 1.9k
评论
    2 个回答
    • 610

    之前也要做一个接口验证的功能,但是model的验证功能很有限,只能做已经有的字段验证,想要验证 比如分页 page,pagesize等参数就傻了

    后来找了个验证框架加进来GUMP

    代码范例如下:

        /**
         * @title 用户搜索参加活动的服务商
         */
        public function validate_doCustomRestGetList(){
            $is_valid = GUMP::is_valid($_GET, array(
                'text' => 'max_len,200',//搜索文本条件
                'limit'=>'integer',//每页显示条数
                'page'=>'integer',//当前页码
            ));
            if(!($is_valid === true)) {
                $this->renderFail(ErrorConst::error(ErrorConst::ERR_PARAM));
            }
        }
        
        //这个是具体的controller函数
        public function doCustomRestGetList(){
            $list = BestPartner::partnerlist(BestPartner::STATE_APPROVED,null,$this->getQuery('text'),$this->getQuery('page'),$this->getQuery('limit'));
            $this->renderSuccess($list);
        }

    这个也有不好的地方:

    • 参数规则需要重新写

    • 对于特别结构复杂的校验支持不好

    优点也有很多:

    • 校验规则自定义,可以无限添加

    校验框架

    https://github.com/Wixel/GUMP

      yii2
      $model = new Model();
      if($model->load($_GET OR $_POST, '') && $model->validate()){
          // 验证数据成功
          return;
      }
      // 验证失败
        撰写回答

        登录后参与交流、获取后续更新提醒

        相似问题
        推荐文章