我有一个复选框列表,它与模型本身没有关联,如表格的其余部分:
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!');
}
}
不幸的是,在提交表单时没有任何反应,好像没有用于验证字段'选项的规则。捕获的地方在哪里?
答案 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()