【发布时间】:2015-09-15 11:03:15
【问题描述】:
我有一个复选框列表,与表单的其余部分一样,它们与模型本身没有关联:
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!');
}
}
不幸的是,提交表单时没有任何反应,好像没有验证字段“选项”的规则。问题在哪里?
【问题讨论】:
-
您可以在模型中将
option声明为public,然后使用模型进行验证。 -
你的循环中不应该有
break语句吗? -
Option已在模型 @InsaneSkullll 中声明为public。还尝试将Option设置为Option[],因为它是数组,但没有运气。 @robsch,我想知道,但即使在方法中只有$this->addError()也没有变化。 -
如果你声明了
public $option,为什么不将它与模型一起使用呢?如果您不会在checkbox中添加model,它只会跳过您的验证规则,因为它没有找到它们。
标签: validation yii2 checkboxlist