Yii2 Html :: dropDownList和Html :: activeDropDownList权衡

int*_*mwa 7 php yii2

在Yii2中,使用Html::activeDropDownList,我可以用以下形式提交数据:

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

有没有办法在上面指定预先选择的类别?我知道可以使用Html::dropDownLost如下方式完成:

<?= Html::dropDownList('category', [1, 3, 5], ArrayHelper::map($categories, 'id', 'name'), [
     'multiple' => 'multiple',
     'class' => 'multiselect',
]) ?>
Run Code Online (Sandbox Code Playgroud)

但有一个权衡!没有地方可以表明这是附加到某个模型的某些数据,因为它们正在使用Html::activeDropDownList.

我找到的解决方案之一是使用ActiveForm如下:

<?= $form->field($model, 'category')
      ->dropDownList('category', [1, 3, 5], ArrayHelper::map($categories, 'id', 'name')
]) ?>
Run Code Online (Sandbox Code Playgroud)

我最后一个选项的问题是我无法指定html选项,如'multiple'和css,如'class'.

有关能够使用下拉列表以及指定列表是多选并具有预选值的任何帮助吗?此外,如果有人指导我到一个资源,我可以阅读何时何地选择,activeDropDownList或者dropDownList我真的很感激.

谢谢!

ank*_*itr 8

@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'
        ]
) ?>
Run Code Online (Sandbox Code Playgroud)

此代码也有效并经过测试.快乐编码:)


sca*_*dge 7

我认为您可以尝试使用$ 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'],
    ];
]) ?>
Run Code Online (Sandbox Code Playgroud)