对于此示例,YII框架中任何一个的多个复选框valiadation都有效

时间:2012-01-24 10:08:11

标签: yii

您好,我可以告诉我如何验证yii框架中任何一个选中的复选框

数组('accept','required','requiredValue'=> 1,'message'=>'你应该选择一个'')

2 个答案:

答案 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>