如何在Yii2 Active Form中的每个下拉列表项之前和之后附加“ HTML标记”

问题描述 投票:0回答:1

我有不同颜色的清单。我已经成功创建了一个显示每个颜色名称的下拉列表。但是现在我的客户想在每个颜色名称的前面显示颜色标记。我的数据库中也存储了颜色代码,但是有什么方法可以在颜色名称前面显示颜色标记。

  1. 我也尝试过ArrayHelper :: map函数,如下所示

    $ colours_list_array = ArrayHelper :: map($ colours_list,'id','colour_name');

但是上面显示了错误。

  1. 我还尝试将直接html写入数据库中的颜色名称,但是现在在下拉列表中,它向我显示了与String完全相同的html标签。

enter image description here

谁能告诉我如何在列表项前面显示颜色标志吗?

->>以下是我的数据库颜色表

enter image description here

->>这是我的ActiveForm颜色下拉列表输入

<?= $form->field($colours_model, 'colour_name')->dropDownList(
        $colours_model->getColours(),
) ?>
php yii2 yii2-basic-app
1个回答
0
投票

根据您的代码更改函数名称

$colors = $colours_model->getColours(); //Assuming this function retrieving all records
$arrayColour = $arrayColorList = [];
foreach($colours as $colour){
    $colour_id = $colour->getId(); //get 'id' column data
    $colour_name = $colour->getColourName(); //Get 'colour_name' column data
    $colour_code = $colour->getColourCode(); //Get 'colour_code' column data

    $arrayColorList[$colour_id] = $colour_name;
    $arrayColour[$colour_id] = ["style" => "background-color:$colour_code"];
}

$form->field($colours_model, 'colour_name')->dropDownList($arrayColorList, ['prompt' => 'Please select', 'options' => $arrayColour])->label(false);

检查此下拉菜单,并检查是否在每个选项列表中附加了“样式”属性。然后,首先在Chrome浏览器中对其进行测试。 Mozilla与此有关。

© www.soinside.com 2019 - 2024. All rights reserved.