Reputation: 51
Using Yii2 Framework, Get data from ArrayHelper::map()
, I'm not able to get dynamic data
<input class="services-checkbox" name="SubscriptionPackage[services][]" value="1" data-serviceid="id" type="checkbox">
<input class="services-checkbox" name="SubscriptionPackage[services][]" value="2" data-serviceid="id" type="checkbox">
<input class="services-checkbox" name="SubscriptionPackage[services][]" value="3" data-serviceid="id" type="checkbox">
<?= $form->field($model, 'services')->checkboxList(ArrayHelper::map($activeServiceModels, 'id', 'name'), ['itemOptions' => ['class' => 'services-checkbox','data-serviceid'=>'id']])->label('Select Service(s):'); ?>
I need Output
<input class="services-checkbox" name="SubscriptionPackage[services][]" value="1" data-serviceid="1" type="checkbox">
<input class="services-checkbox" name="SubscriptionPackage[services][]" value="1" data-serviceid="2" type="checkbox">
<input class="services-checkbox" name="SubscriptionPackage[services][]" value="1" data-serviceid="3" type="checkbox">
Upvotes: 0
Views: 781
Reputation: 321
You can use item callable function to render each checkbox item, eg:
$form->field($model, 'name')->checkboxList(ArrayHelper::map($models, 'id', 'name'), [
'itemOptions' => ['class' => 'services-checkbox','data-serviceid'=>'id'],
'item' => function ($index, $label, $name, $checked, $value) {
return Html::checkbox($name, $checked, ['data-serviceid' => $value, 'value' => 1]) . Html::label($label);
}
])->label('Select Service(s):');
Upvotes: 1
Reputation: 2258
update your code like below
<?=
$form->field($model, 'services')->checkboxList(ArrayHelper::map($activeServiceModels, 'id', 'name'), ['class'=>"btn-checkbox",
'item' => function($index, $label, $name, $checked, $value) {
return "<label class='col-md-4'><input type='checkbox' data-serviceid="1" {$checked} name='{$name}' value='{$value}'>{$label}</label>";
}
]);
?>
add your class 'class'=>"btn-checkbox" into the array.
and you can debug more inside the item callback function for customization.
Upvotes: 1