Hi, I want to customize checkboxes in my checkboxlist, so I set an item template like described here.
When I do that, I get a list of checkboxes and wrapper just after them empty.
If I use basic version:
$weekDays = [
'monday' => Yii::t('global', 'monday'),
'tuesday' => Yii::t('global', 'tuesday'),
'wednesday' => Yii::t('global', 'wednesday'),
'thursday' => Yii::t('global', 'thursday'),
'friday' => Yii::t('global', 'friday'),
'saturday' => Yii::t('global', 'saturday'),
'sunday' => Yii::t('global', 'sunday'),
];
echo $form->field($model, 'week_days')->checkboxList($weekDays);
The result is fine:
<div class="form-group field-facilityeventform-week_days">
<label class="control-label">Week Days</label>
<input type="hidden" name="FacilityEventForm[week_days]" value="">
<div id="facilityeventform-week_days">
<div class="checkbox"><label><input type="checkbox" name="FacilityEventForm[week_days][]" value="monday" checked=""> monday</label></div>
<div class="checkbox"><label><input type="checkbox" name="FacilityEventForm[week_days][]" value="tuesday"> tuesday</label></div>
<div class="checkbox"><label><input type="checkbox" name="FacilityEventForm[week_days][]" value="wednesday"> wednesday</label></div>
<div class="checkbox"><label><input type="checkbox" name="FacilityEventForm[week_days][]" value="thursday"> thursday</label></div>
<div class="checkbox"><label><input type="checkbox" name="FacilityEventForm[week_days][]" value="friday"> friday</label></div>
<div class="checkbox"><label><input type="checkbox" name="FacilityEventForm[week_days][]" value="saturday"> saturday</label></div>
<div class="checkbox"><label><input type="checkbox" name="FacilityEventForm[week_days][]" value="sunday"> sunday</label></div></div>
<p class="help-block help-block-error"></p>
</div>
</div>
But if I set the item template:
echo $form->field($model, 'week_days')->checkboxList($weekDays,
[
'item' => function($index, $label, $name, $checked, $value) {
$checked = $checked ? 'checked' : '';
echo "<div class=\"checkbox\">
<label>
<input type=\"checkbox\" name=\"$name\" $checked value=\"$value\">
$label
</label>
</div>";
}
]
Checkboxes get generated outside the parent div:
<form id="facilityEventForm" action="/facility-event/test/" method="post" data-pjax="" autocomplete="off">
<div class="checkbox"><label><input type="checkbox" name="FacilityEventForm[week_days][]" checked="" value="monday">monday</label></div>
<div class="checkbox"><label><input type="checkbox" name="FacilityEventForm[week_days][]" checked="" value="tuesday">tuesday</label></div>
<div class="checkbox"><label><input type="checkbox" name="FacilityEventForm[week_days][]" checked="" value="wednesday">wednesday</label></div>
<div class="checkbox"><label><input type="checkbox" name="FacilityEventForm[week_days][]" checked="" value="thursday">thursday</label></div>
<div class="checkbox"><label><input type="checkbox" name="FacilityEventForm[week_days][]" checked="" value="friday">friday</label></div>
<div class="checkbox"><label><input type="checkbox" name="FacilityEventForm[week_days][]" checked="" value="saturday">saturday</label></div>
<div class="checkbox"><label><input type="checkbox" name="FacilityEventForm[week_days][]" checked="" value="sunday">sunday</label></div>
<div class="form-group field-facilityeventform-week_days">
<label class="control-label">Week Days</label>
<input type="hidden" name="FacilityEventForm[week_days]" value="">
<div id="facilityeventform-week_days"></div>
<p class="help-block help-block-error"></p>
</div>
<button type="button" class="btn btn-default" data-dismiss="modal">cancel</button>
<button type="submit" class="btn btn-primary">save</button>
</form>
As a result, I get an empty string instead of an array in $_POST.