在选项标记内我需要添加 span 标记,代码应如下所示:
<option><span class=flag></span></option>
我还需要将标志名称作为span第二类参数。我需要指定的是 currency_code 。这是当前的代码:
<?php
echo $form->field($model, 'currency', [
'template' => '<label>{label}</label>{input}{hint}'
])
->dropDownList([NULL => ''] + ArrayHelper::map(app\models\Currency::find()->all(), 'currency_code', 'currency_code'), ['role' => 'currency_code'])->hint('Select preferred currency.')
?>
我该怎么做?
答案 0 :(得分:2)
这会对你有所帮助
$listData=['1'=>'value1', '2'=>'value2', '3'=>'value3'];
$options=
[
'1' => ['disabled' => true],
'2' => ['label' => 'some other label2'],
'3' => ['class' => 'someclass'],
];
echo $form->field($model, 'attribute')->dropDownList(
$listData,
['prompt'=>'Select...', 'options'=>$options]);
会产生一些像这样的选择html代码
<select name="Model[attribute]" class="form-control" id="model-attribute">
<option value="">Select...</option>
<option disabled="" selected="" value="1">value1</option>
<option label="some other label2" value="2">value2</option>
<option value="3" class="someclass">value3</option>
</select>
所以使用这些选项可以设置listdata(listitems)的参数
编辑:
$listData=ArrayHelper::map(Organizer::find()->all(), 'id', 'name');
$listData=['1'=>'<span>some html added</span>', '2'=>'value2', '3'=>'value3'];
$options=
[
'1' => ['disabled' => true],
'2' => ['label' => 'some other label2'],
'3' => ['class' => 'someclass', 'value'=>'<span>some html added</span>'],
];
echo $form->field($model, 'organizer_id')->dropDownList(
$listData,
['prompt'=>'Select...','encode'=>true,'options'=>$options]);
将返回
<select name="Poll[organizer_id]" class="form-control" id="poll-organizer_id">
<option value="">Select...</option>
<option disabled="" selected="" value="1"><span>some html added</span></option>
<option label="some other label2" value="2">value2</option>
<option value="3" class="someclass">value3</option>
</select>
遗憾的是,如果我禁用编码,只显示文本,并且html消失了...... 但我想必须有办法做到这一点。
EDIT2: 我发现为什么它在选项中不起作用不允许其他标记(参见:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option)。 所以我的第一个解决方案是正确您应该可以通过background-image将标志图标添加到选项中。