修改 CHtml::activecheckBoxList 以在列中打印复选框


Modify CHtml::activecheckBoxList to print checkboxes in columns

我在一列中打印了复选框列表,但我需要它在列中打印,并且每列中应该例如 10 个复选框。我的 php 代码:

//$user_cats- array of categories. 
    echo CHtml::activecheckBoxList($categories,
           'selected['.$parent->id.']',
        CHtml::listData(
                $user_cats,
                'id',
                'title',
                ''
        ));

也许有没有办法修改 CHtml::listData 它可以在列中打印复选框?

我会做这样的事情:

CHtml::activecheckBoxList($categories,
       'selected['.$parent->id.']',
    CHtml::listData(
            $user_cats,
            'id',
            'title',                
    ), array('separator'=>'',
             'template'=>'<span class="checkbox-columns">{input} {label}</span>'),
    );

然后在我的 CSS 中,如下所示:

span.checkbox-columns {
    float:left;
    width: 20%;
}

根据需要调整 CSS,主要是宽度百分比。

首先CHtml::listData生成一个适合用于activeCheckboxListdropdownlist等的数据集。

现在,如果要更改复选框在页面上的显示方式,则需要将htmlOptions数组传递给activeCheckBoxList。你可以在Yii activeCheckBoxList上阅读更多关于它的信息

例如:

CHtml::activecheckBoxList($categories,
       'selected['.$parent->id.']',
    CHtml::listData(
            $user_cats,
            'id',
            'title',                
    ), array('separator'=>'--')
    );
因此,默认情况下,如果您不指定分隔符,它将

使用换行符,但如果您提供它,它将使用该分隔符。此外,如果您想添加更多样式或更好地格式化复选框,您也可以这样做。只需阅读文档,链接包含在上面。通过为 htmlOptions 数组指定其他选项,这一切都可以实现。