0

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">

2 Answers 2

1

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.

Sign up to request clarification or add additional context in comments.

Comments

1

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):');

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.