没有模型的Yii2 checkboxlist验证

时间:2015-09-15 11:03:15

标签: validation yii2 checkboxlist

我有一个复选框列表,它与模型本身没有关联,如表格的其余部分:

echo Html::checkboxList('options', $selected_options, $options, ['class' => 'checkbox']);

在模型中,我有以下规则:

public function rules() {
    return [
        ....*/
        [['options'], 'integer'],
        ['options', 'optValidation', 'on' => 'update'],
    ];
}

以下验证器:

public function optValidation($attribute, $params) {
    foreach ($attribute as $attr){
        if ($attr == 1) {
            $return = true;
        }
        else {
            $return = false;
        }
    }
    if (!$return) {
        $this->addError($attribute, 'At least one checkbox has to be selected!');   
    }
}

不幸的是,在提交表单时没有任何反应,好像没有用于验证字段'选项的规则。捕获的地方在哪里?

1 个答案:

答案 0 :(得分:0)

您需要在模型类中添加public function rules() { ... [['options'], 'integer'], [['options'], 'optValidation', 'on' => 'update'], [['options'], 'safe'], ... 作为公共属性。然后,您需要在规则中将其设置为安全:

<?php echo $form->field($model, 'options')->checkboxList('options', $selected_options, $options, ['class' => 'checkbox']); ?>

最后,您必须像其他与模型相关的输入一样生成输入,即使它没有存在于您的数据库表中,您需要在模型中使用它:

http.request()