CheckBoxList проверить все по умолчанию yii

Я использую checkBoxList так:

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

Я уже использую опцию «отметить все», но я бы хотел, чтобы все поля были отмечены по умолчанию, когда пользователь впервые заходит на страницу. Затем они могут снять отметку с тех, которые не применяются.

Как я могу установить все флажки по умолчанию, когда пользователь впервые заходит на страницу, используя список флажков Yii?


person goose    schedule 11.05.2013    source источник


Ответы (2)


Вы должны передать все значения вашего checkBoxList в $selectedInterests как массив. Я не могу проверить это сейчас, но, вероятно, это должно работать:

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».

person javijuol    schedule 11.05.2013

checkBoxList имеют три параметра.

  1. первый параметр - имя поля
  2. 2-й параметр - это массив выбранных ключей. Этот параметр делает выбранным список флажков.
  3. 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 выбранным

person Tahir Yasin    schedule 09.07.2014