извините за поздний ответ.
Но я нашел решение без установки какого-либо расширения.
Возьмите скрытое поле с тем же именем [Поле со списком флажков].
<?php echo $form->hiddenField($model,'categories');?>
Показать список категорий с именем, отличным от нашего имени поля (несколько флажков).
Но запомните «класс» и поиграйте с классом, чтобы сохранить значения.
<?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')
);
?>
Таким образом, валидация также должна работать, вы получаете идентификаторы категорий через запятую, например, [,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>