Yii2 在 select > 选项列表中添加额外的属性

Yii2 add extra attribute in select > options list

如何在所有选项列表中添加额外的属性,如下面的屏幕截图state_id=1

<?= $form->field($model, 'district_id')->dropDownList(ArrayHelper::map($Districts, 'id', 'name')) ?>

您需要遍历 $Districts 数组并将要添加的所有属性关联到下拉列表的 <option>,我假设您的 $Districts 数组有类似以下

$Districts=[
    1=>"North Andaman",
    2=>"South Andaman"
    3=>"Nicobar"
];

现在您需要迭代该数组并将属性与每个选项相关联

foreach ($Districts as $id => $name) {
    $optionAttributes[$id] = ['my-attr' => 'value'];
}

以上将显示类似

的内容
Array
(
    [1] => Array
        (
            [my-attr] => value
        )

    [2] => Array
        (
            [my-attr] => value
        )

    [3] => Array
        (
            [my-attr] => value
        )

)

现在,在创建下拉列表时,您应该将此数组传递给 dropdownList()options 选项,见下文

echo $form->field($model, 'district_id')->dropDownList(
    $Districts,
    ['options' => $optionAttributes]
);

现在,如果您看到页面的来源,它会显示如下所示的下拉列表

<select id="contacts-district_id" name="Contacts[district_id]" class="form-control">
    <option value="1" my-attr="value">North Andaman</option>
    <option value="2" my-attr="value">South Andaman</option>
    <option value="3" my-attr="value">Nicobar</option>
</select>