花椒 2016-04-29 12:46:25 7280次浏览 1条评论 0 1 0

最近在做外卖系统,其中在查询订单配送状态时用到了CheckboxList,就是查询多个状态的订单列表,
订单模型Order中定义了: * @property integer $delivery_status
规则里也是定义的integer,

    public function rules()
    {
        return [
		............//其他规则
		[['delivery_status'], 'integer'],
        ];
    }
在订单的创建、修改等等中没有问题,
但是当使用

    <?=Html::activeCheckboxList($model,'delivery_status',[0=>'待发布',1=>'待接单',2=>'待取货',3=>'执行中',4=>'已完成',5=>'已取消'],

时,OrderSearch模型是无法通过验证的,

        $this->load($params);
        if (!$this->validate()) {
                //验证会不通过
        }

解决办法:
在OrderSearch中重新定义delivery_status规则:

public function rules()
{
    return [
	............//其他规则
	[['delivery_status'], 'safe'],
    ];
}

这样,在OrderSearch中做条件筛选时就不会有问题了:

        $query->andFilterWhere([
             .................. //其他条件
            'delivery_status' => $this->delivery_status,
        ]);

以上仅是个人理解,希望对大家能有帮助~
觉得很赞
您需要登录后才可以评论。登录 | 立即注册