В HTML-коде с Yii2::dropdownlist и в HTML::activeDropDownList компромисс

в Yii2, используя Html::activeDropDownList, Я могу представить данные в следующей форме:

 <?= Html::activeDropDownList($model, 'category', ArrayHelper::map($categories, 'id', 'name'), [
       'multiple' => 'multiple',
       'class' => 'multiselect',
 ]) ?>

есть ли способ указать предварительно выбранные категории В приведенном выше? Я знаю, что это можно сделать с помощью 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, такие как "несколько" и css, такие как "класс".

любая помощь по возможности использовать выпадающий список с возможностью указать, что список будет многозначным и имеет предварительно выбранные значения? Также, если кто-то направил меня на ресурс, где я могу прочитать о том, когда и где выбрать activeDropDownList или dropDownList, Я был бы очень признателен что.

спасибо!

2 ответов


@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 и атрибут тега как предложил в doc

<?= 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'],
    ];
]) ?>