Yii2 验证器

控制器代码

public function checkParams($params,$type)
    {
        $data = ['VotingActivityValdate' => $params];
        $validate = new VotingActivityValdate(['scenario' => $type]);
        $validate->load($data);
        if (!$validate->validate()) {
            throw new BadRequestHttpException($this->getFirstErrorToString($validate));
        }
        return true;
    }

验证器代码

<?php

namespace app\models\validate;

use yii\base\Model;

/**
 * ContactForm is the model behind the contact form.
 */
class VotingActivityValdate  extends Model
{

    /** 投票活动 */
    public $voting_activity_id;
    public $voting_activity_name;
    public $voting_activity_start_time;
    public $voting_activity_end_time;
    public $voting_activity_pic;
    public $voting_activity_color;
    public $voting_activity_status;
    public $voting_activity_rule;
    public $voting_activity_join_time;
    public $voting_activity_is_share;

    /** 投票活动选项 */
    public $voting_activity_items_id;
    public $voting_activity_items_name;
    public $voting_activity_items_pic;

    /** 新人礼包 */
    public $newcomer_gift_bag_id;
    public $gift_bag_name;
    public $gift_bag_main_pic;
    public $gift_bag_top_pic;
    public $give_out_num;
    public $start_time;
    public $status;
    public $end_time;
    public $gift_coupon_ids;
    public $launch_position;
    public $card_template_id;
    public $card_level_id;
    public $join_type;

    /**
     * 验证规则
     * @inheritdoc
     * @return array
     */
    public function rules()
    {
        return [
            /** 投票活动 */
            [['voting_activity_id','voting_activity_name','voting_activity_start_time','voting_activity_end_time','voting_activity_pic','voting_activity_color','voting_activity_status','voting_activity_rule','voting_activity_join_time','voting_activity_is_share'],'required','message' => '{attribute}不能为空'],
            [['voting_activity_status','voting_activity_join_time','voting_activity_is_share'], 'in', 'range' => ['1','0'],'message'=>'{attribute}不对'],
            [['voting_activity_name'],'string','length'=>[1,20],'tooLong'=>'{attribute}最多20字', 'tooShort'=> '{attribute}最少1字'],
            [['voting_activity_start_time','voting_activity_end_time'],'datetime','format' => 'php:Y-m-d H:i:s','message'=>'{attribute}不对'],
            [['voting_activity_start_time','voting_activity_end_time'], 'validateActivityTime'],

            /** 投票活动选项 */
            [['voting_activity_items_name','voting_activity_items_pic','voting_activity_items_id'],'required','message' => '{attribute}不能为空'],
            [['voting_activity_items_name'],'string','length'=>[1,30],'tooLong'=>'{attribute}最多30字', 'tooShort'=> '{attribute}最少1字'],

            /** 新人礼包 */
            [['newcomer_gift_bag_id','gift_bag_name','gift_bag_main_pic','gift_bag_top_pic','give_out_num','start_time','end_time','status','gift_coupon_ids','join_type','launch_position'],'required','message' => '{attribute}不能为空'],
            [['newcomer_gift_bag_id', 'give_out_num'], 'integer','message' => '{attribute}必须为整数'],
            [['give_out_num'], 'compare', 'compareValue' => 100000,'operator'=>'<=','message'=>'{attribute}最大100000'],
            [['give_out_num'], 'compare', 'compareValue' => 1,'operator'=>'>=','message'=>'{attribute}最小1'],
            [['status'], 'in', 'range' => ['1','0'],'message'=>'{attribute}不对'],
            [['gift_bag_name'],'string','length'=>[1,10],'tooLong'=>'{attribute}最多10字', 'tooShort'=> '{attribute}最少1字'],
            [['start_time','end_time'],'datetime','format' => 'php:Y-m-d H:i:s','message'=>'{attribute}不对'],
            [['start_time','end_time'], 'validateGiftBagTime'],
            [['join_type'], 'in', 'range' => [1,2,3],'message'=>'{attribute}不对'],
            [['join_type','card_level_id','card_template_id'], 'validateJoinType'],
        ];
    }

    /**
     * 字段名
     * @return string[]
     */
    public function attributeLabels()
    {
        return [
            /** 投票活动 */
            'voting_activity_id'           => '投票活动ID',
            'voting_activity_name'         => '投票活动名称',
            'voting_activity_start_time'   => '投票活动开始时间',
            'voting_activity_end_time'     => '投票活动结束时间',
            'voting_activity_pic'          => '投票活动背景图',
            'voting_activity_color'        => '颜色',
            'voting_activity_status'       => '投票活动状态',
            'voting_activity_rule'         => '投票活动规则',
            'voting_activity_join_time'    => '参与次数',
            'voting_activity_is_share'     => '是否分享',

            /** 投票活动选项 */
            'voting_activity_items_id'     => '投票选项ID',
            'voting_activity_items_name'   => '投票名称',
            'voting_activity_items_pic'    => '投票图片',

            /** 新人礼包 */
            'newcomer_gift_bag_id' => '礼包id',
            'gift_bag_name'        => '礼包名称',
            'gift_bag_main_pic'    => '礼包主图',
            'gift_bag_top_pic'     => '礼包置顶图',
            'give_out_num'         => '发放数量',
            'start_time'           => '开始时间',
            'end_time'             => '结束时间',
            'status'               => '状态',
            'gift_coupon_ids'      => '优惠券id',
            'join_type'            => '参与条件',
            'launch_position'      => '投放位置',
            'card_level_id'        => '会员等级',
            'card_template_id'     => '会员卡',
        ];
    }

    /**
     * 场景
     * @return \string[][]
     */
    public function scenarios(){
        return [
            'votingActivityCreate'     => ['voting_activity_name','voting_activity_start_time','voting_activity_end_time','voting_activity_pic','voting_activity_color','voting_activity_status','voting_activity_rule','voting_activity_join_time','voting_activity_is_share'],//投票活动添加
            'votingActivityUpdate'     => ['voting_activity_id','voting_activity_name','voting_activity_start_time','voting_activity_end_time','voting_activity_pic','voting_activity_color','voting_activity_status','voting_activity_rule','voting_activity_join_time','voting_activity_is_share'],//投票活动添加
            'votingActivityItemCreate' => ['voting_activity_items_name','voting_activity_items_pic'],//投票活动选项添加
            'activityItemCreate'       => ['voting_activity_id','voting_activity_items_name','voting_activity_items_pic'],//投票活动选项添加
            'activityItemUpdate'       => ['voting_activity_items_id','voting_activity_items_name','voting_activity_items_pic'],//投票活动选项添加
            'newcomerGiftBagCreate'    => ['gift_bag_name','gift_bag_main_pic','gift_bag_top_pic','give_out_num','start_time','end_time','status','gift_coupon_ids'],//新人礼包添加
            'newcomerGiftBagUpdate'    => ['newcomer_gift_bag_id','gift_bag_name','gift_bag_main_pic','gift_bag_top_pic','give_out_num','start_time','end_time','status','gift_coupon_ids'],//新人礼包修改
            'actionNewcomerGiftBagCreateOne' => ['gift_bag_name','gift_bag_main_pic','gift_bag_top_pic','give_out_num','start_time','end_time','status','gift_coupon_ids','join_type','launch_position','card_level_id','card_template_id'],//新人礼包添加
            'actionNewcomerGiftBagUpdateOne' => ['gift_bag_name','gift_bag_main_pic','gift_bag_top_pic','give_out_num','start_time','end_time','status','gift_coupon_ids','join_type','launch_position','card_level_id','card_template_id','newcomer_gift_bag_id'],//新人礼包修改
        ];
    }

    /**
     * 活动时间判断
     * @param $attribute
     * @return bool|void
     */
    public function validateActivityTime($attribute)
    {
        if(strtotime($this->voting_activity_end_time) < time()){
            return $this->addError($attribute, "结束时间要大于当前的时间");
        }
        if(strtotime($this->voting_activity_start_time) >= strtotime($this->voting_activity_end_time)){
            return $this->addError($attribute, "开始时间要小于结束时间");
        }
        return true;
    }

    /**
     * 新人有礼时间判断
     * @param $attribute
     * @return bool|void
     */
    public function validateGiftBagTime($attribute)
    {
        if(strtotime($this->start_time) >= strtotime($this->end_time)){
            return $this->addError($attribute, "活动开始时间要小于结束时间");
        }
        return true;
    }

    /**
     * 新人礼包--参与条件判断
     * @param $attribute
     * @return bool|void
     */
    public function validateJoinType($attribute)
    {
        if ($this->join_type == 3) {
            if (empty($this->card_level_id)) {
                return $this->addError($attribute, "会员卡等级不能为空");
            }
            if (empty($this->card_template_id)) {
                return $this->addError($attribute, "会员卡不能为空");
            }
        }
        return true;
    }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值