CheckboxList

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Jettecs
Сообщения: 13
Зарегистрирован: 2017.02.03, 16:30

CheckboxList

Сообщение Jettecs »

Доброго времени суток.
Есть
Вот такой код

Код: Выделить всё

<?=$form->field($model, 'created_at')->checkboxList(['Checkbox 1','Checkbox 2','Checkbox 3'],['class'=>'mt-checkbox-list', 'itemOptions' => ['labelOptions'=>['class'=>'mt-checkbox mt-checkbox-outline']]]); ?>
который генерирует вот такую разметку

Код: Выделить всё

<div class="form-group field-users-created_at required">
<div class="mt-checkbox-listfkshkfhsk"><label class="control-label" for="users-created_at">Дата создания</label><input type="hidden" name="Users[created_at]" value=""><div id="users-created_at" class="mt-checkbox-list"><label class="mt-checkbox"><input type="checkbox" name="Users[created_at][]" value="0"> Checkbox 1</label>
<label class="mt-checkbox"><input type="checkbox" name="Users[created_at][]" value="1"> Checkbox 2</label>
<label class="mt-checkbox"><input type="checkbox" name="Users[created_at][]" value="2"> Checkbox 3</label></div><span></span></div>
</div>
А мне необходимо внутрь каждого label поместить <span></span> Что бы получилось вот так

Код: Выделить всё

<div class="form-group field-users-created_at required">
<div class="mt-checkbox-listfkshkfhsk"><label class="control-label" for="users-created_at">Дата создания</label><input type="hidden" name="Users[created_at]" value=""><div id="users-created_at" class="mt-checkbox-list"><label class="mt-checkbox"><input type="checkbox" name="Users[created_at][]" value="0"> Checkbox 1<span></span></label>
<label class="mt-checkbox"><input type="checkbox" name="Users[created_at][]" value="1"> Checkbox 2<span></span></label>
<label class="mt-checkbox"><input type="checkbox" name="Users[created_at][]" value="2"> Checkbox 3<span></span></label></div><span></span></div>
</div>

Jettecs
Сообщения: 13
Зарегистрирован: 2017.02.03, 16:30

Re: CheckboxList

Сообщение Jettecs »

То есть меня интересует как изменить стандартный template на тот что нужен мне.
Пробовал такой вариант
$this->template = "<div class='mt-checkbox-list'>{input}<span></span></div>";
но он просто после всех label добавляет span. А хотелось бы запихнуть этот span всередину.

dox
Сообщения: 12
Зарегистрирован: 2012.05.23, 18:08

Re: CheckboxList

Сообщение dox »

Привет. Сталкивался с похожей задачей. Вот пример из проекта:

Код: Выделить всё

<?= $form->field($model,'group')->checkboxList( [] ,[
   'item' => function($index, $label, $name, $checked, $value) {
         $options = array_merge(['label' => $label, 'value' => $value], []);
         return '<div class="mt-checkbox-list">' . Html::checkbox($name, $checked, $options) . '</div>';
   }
]) ?>
Суть в следующем: здесь для item указывается функция отрисовки элемента, в которой можно как угодно рендерить элемент. В том числе добавить span

Ответить