В Yii2, используя Html::activeDropDownList
, я могу отправить данные в форме, подобной следующей:
<?= Html::activeDropDownList($model, 'category', ArrayHelper::map($categories, 'id', 'name'), [ 'multiple' => 'multiple', 'class' => 'multiselect', ]) ?>
Есть ли способ указать предварительно выбранные категории в приведенном выше? Я знаю, что это можно сделать, используя Html::dropDownLost
как Html::dropDownLost
ниже:
<?= Html::dropDownList('category', [1, 3, 5], ArrayHelper::map($categories, 'id', 'name'), [ 'multiple' => 'multiple', 'class' => 'multiselect', ]) ?>
Но есть компромисс! Нельзя указывать, что это некоторые данные, прикрепленные к определенной модели для отправки, поскольку использовался Html::activeDropDownList
.
Одним из решений, которое я нашел, было использование ActiveForm
следующим образом:
<?= $form->field($model, 'category') ->dropDownList('category', [1, 3, 5], ArrayHelper::map($categories, 'id', 'name') ]) ?>
Проблема с этим последним вариантом заключается в том, что я не могу указать параметры html, такие как «multiple» и css, например «class».
Любая помощь по возможности использовать выпадающий список с возможностью указать, что список будет мультиселективным и иметь предварительно выбранные значения? Также, если кто-то направил меня на ресурс, где я могу прочитать о том, когда и где выбрать activeDropDownList
или dropDownList
, я был бы очень признателен этому.
Благодаря!
Ответ @scaisEdge правильный, но есть еще один вариант, который вы можете попробовать:
<?php $model->category = [1,3,5]; //pre-selected values list echo $form->field($model, 'category') ->dropDownList(ArrayHelper::map($categories, 'id', 'name'), [ 'multiple' => 'multiple', 'class' => 'YOUR_CLASS' ] ) ?>
Этот код также действителен и проверен. Счастливое кодирование 🙂
Я думаю, вы можете попробовать с $ options и атрибутом тега, как предлагается в документе
<?= Html::dropDownList('category', [1, 3, 5], ArrayHelper::map($categories, 'id', 'name'), [ 'multiple' => 'multiple', 'options' => [ 'value1' => ['disabled' => true, 'class' => 'yourClass', 'style'=> 'yourStyle', .... ], 'value2' => ['label' => 'value 2'], ]; ]) ?>