Это поможет вам
$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 нет ... Но я думаю, там должен быть способ сделать это.
Редактировать2: Я выяснил, почему это не сработало в опции, никакие другие теги не разрешены (см.: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option). Итак, мое первое решение было правильным. Вы должны иметь возможность добавлять свои значки флагов к опции фоном-изображением.
Это даже не близко к тому, что мне нужно: /. Мне нужно поместить тег span внутри тега опций, добавить назначенный класс в span со значением от ArrayHelper – Sasha
Да, я тоже просто видел это, было слишком быстро с чтением sry. Я предполагаю, что тогда ваш единственный вариант - расширить BaseHtml :: dropDownList или расширить static :: renderSelectOptions ($ selection, $ items, $ options); потому что это функции, возвращающие параметры. Я не нашел возможности изменить «текст» в этой функции по какой-либо опции. – BHoft
только что добавил, но все же не правильный вариант. – BHoft