Yii2 Select2 Always Showing Placeholder Instead of Database Values

37 Views Asked by At

I have a problem with my Yii2 Select2 field because it's not retrieving inserted values from the database, showing the placeholder all the time. I tried using a method to retrieve the inserted values from the database and put them in the 'value' field attribute, but when saving the form they resulted in duplicate entries, meaning that the real records are still in the field but kinda hidden. What can I do about it to show the inserted values in the Select2?

This is the form field

<div class="col-md-4">
    <?php $users = ArrayHelper::map(Profile::getActiveUsers(), 'id', 'name');
        echo $form->field($model, 'assignment', ['options' => [
            'class' => 'form-group form-group-default form-group-default-select2']])
                ->widget(Select2::className(), [
                    'data' => $users,
                    'options' => [
                        'placeholder' => 'Select users...',
                        'multiple' => true,
                    ],
                    'pluginOptions' => [
                        'allowClear' => true,
                        'multiple' => true,
                    ],
                    'theme' => Select2::THEME_DEFAULT,
        ])->label('Users');?>
</div>

I tried adding inside 'options' something like 'value' => methodToGetInsertedValues() but as I said before, it gives error of duplicate entries

1

There are 1 best solutions below

0
Abdelilah Dahdahi On

Managed to solve the issue by setting the value in my action controller. I retrieved the records, assigned them to the field value, and delete them all before saving the model.

Something like

$model->modelField = ModelName::getRecords($model->id);

then before saving the model

ModelName::deleteAll(['id' => $model->id]);