2

我正在使用 checkBoxList 像这样-

CHtml::checkBoxList('Interests', $selectedInterests, CHtml::listData($interests, 'interest_id','interest'), array('uncheckValue'=>'0',''checkAll' => 'Check all'));

我已经在使用“选中所有”框的选项,但我希望在用户第一次访问该页面时默认选中所有框。然后他们可以取消选中那些不适用的。

当用户第一次使用 Yii 的复选框列表访问页面时,如何默认选中所有框?

4

2 回答 2

3

您应该将 $selectedInterests 中的 checkBoxList 的所有值作为数组传递。我现在无法测试它,但可能这应该有效:

CHtml::checkBoxList('Interests', CHtml::listData($interests, 'interest_id','interest_id'), CHtml::listData($interests, 'interest_id','interest'), array('uncheckValue'=>'0',''checkAll' => 'Check all'));

查看该方法的源代码,您应该在这一行返回 true:

$checked=!is_array($select) && !strcmp($value,$select) || is_array($select) && in_array($value,$select);

其中 $select 是您的 $selectedInterest,而 $value 在您的情况下是您的每个“interest_id”属性。

于 2013-05-11T19:18:59.793 回答
1

checkBoxList有三个参数。

  1. 第一个参数是字段名
  2. 第二个参数是选定键的数组。此参数使复选框列表被选中。
  3. 第三个参数是选项数组

示例代码:

$books = CHtml::listData(Book::model()->findAll(), 'id', 'name');
$selected_keys = array_keys(CHtml::listData( $model->books, 'id' , 'id'));
echo CHtml::checkBoxList('Author[books][]', $selected_keys, $books);

更多细节可以在我的博文中找到: 如何选择 Yii checkBoxList

于 2014-07-09T08:18:33.743 回答