控制器代码
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;
}
}