您好,我可以告诉我如何验证yii框架中任何一个选中的复选框
数组('accept','required','requiredValue'=> 1,'message'=>'你应该选择一个'')
答案 0 :(得分:1)
由于这些值通常作为数组发送,因此我为这些情况编写了一个数组验证器:https://github.com/schmunk42/p3extensions/blob/master/validators/P3ArrayValidator.php
用法示例:
array('accept',
'ext.validators.P3ArrayValidator',
'min'=>1,
'allowEmpty'=>false,
'message' => 'You should select at least one'
),
答案 1 :(得分:0)
但是,我找到了一个没有安装任何扩展程序的解决方案。
使用相同名称的隐藏字段[复选框列表字段]。
<?php echo $form->hiddenField($model,'categories');?>
显示名称与我们的字段名称不同的类别列表(多个复选框)。
但是,请记住&#39;类&#39;,并使用该类来保存值。
<?php
echo CHtml::checkBoxList(
'group',
//you can pass the array here which you want to be pre checked
explode(',', trim($model->attributes['categories'], ',')),
CHtml::listData(Category::model()->findAll(),'id','name'),
array('separator'=>'', 'template'=>'<tr><td style="width:5%;">{input}</td><td>{label}</td></tr>', 'class' => 'group')
);
?>
这种方式验证也应该有效,您可以将逗号分隔为类别ID,例如[,1,2,6,]
<script>
$(function(){
$(".group").click(function(){
var str = $('.group:checked').map(function() {
return this.value;
}).get().join();
var groupCats = (str.length > 0) ? ','+str+',' : '';
$('#ModelNAME_field').val(groupCats);
// Get the 'ModelNAME_field' by viewing source of HTML of hidden field.
});
});
</script>