我有一个不同颜色的列表。我已经成功创建了一个显示每个颜色名称的下拉列表。但是现在我的客户想在每个颜色名称的前面显示颜色标记。我的数据库中也存储了颜色代码,但是有什么方法可以在颜色名称前面显示颜色标记。
我还尝试了如下所示的ArrayHelper :: map函数
$ colours_list_array = ArrayHelper :: map($ colours_list,'id','colour_name');
但是上面显示了错误。
有人可以告诉我如何在列表项前面显示颜色徽章吗?
->>以下是我的颜色数据库表
->>这是我的ActiveForm颜色下拉列表输入
<?= $form->field($colours_model, 'colour_name')->dropDownList(
$colours_model->getColours(),
) ?>
答案 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有与此相关的一些问题。
我在一个项目中有类似的要求,并且使用相同的代码对我来说很好用。