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

时间:2019-11-15 13:24:51

标签: php yii2 yii2-basic-app

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

  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(),
) ?>

1 个答案:

答案 0 :(得分: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);

输出:

<select>
    <option value='3' style="background-color:#FFFFF">White</option>
    <option value='4' style="background-color:#C0C0C0"><b>SILVER</b></option>
    .
    .
    .
</select>

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

我在一个项目中有类似的要求,并且使用相同的代码对我来说很好用。