php - yii 控制器中检查请求参数是否正确
迷茫
迷茫 2017-04-10 18:06:28
[PHP讨论组]

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

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

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(2)
大家讲道理

之前也要做一个接口验证的功能,但是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;
}
// 验证失败
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号