0

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

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

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

4

2 回答 2

2

我会做这样的事情:

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,主要是宽度百分比。

于 2012-06-26T16:10:32.277 回答
1

首先CHtml::listData生成一个适合在等中使用的数据activeCheckboxListdropdownlist

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

例如:

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

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

于 2012-06-26T15:10:45.157 回答