Yii2 ActiveForm - dropDownList为{input}制作模板

时间:2015-09-25 14:08:46

标签: php yii2

选项标记内我需要添加 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.')
    ?> 

我该怎么做?

1 个答案:

答案 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">&lt;span&gt;some html added&lt;/span&gt;</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将标志图标添加到选项中。