Раскрывающийся список Yii Пустое значение по умолчанию
У меня есть выпадающий список в моей модели _form, и я хочу добавить пустое значение (которое я хочу по умолчанию). У меня есть следующее: В _форме:
<?php echo $form->labelEx($model,'country_id'); ?>
<?php echo $form->dropDownList($model,'country_id',Country::items(),array('empty' => '--Select a country--')); ?>
<?php echo $form->error($model,'country_id'); ?>
В Стране-Модели:
public static function items()
{
return CHtml::listData(Country::model()->findAllBySql(
'SELECT * from country'),
'id', 'name');
}
Даже мой пустой параметр находится в первой строке выпадающего списка, 1-я страна в списке отображается по умолчанию.
Я пытался:
<?php echo $form->dropDownList($model,'country_id',
Country::items(),array('empty'=>'--Select a country--',
'options'=>
array(
'3'=>array('selected'=>'selected')
)
));
?>
Таким образом, я могу выбрать опцию по умолчанию, но не могу установить для нее пустое значение, только страны, полученные из модели: элементы.
Есть идеи?
5 answers
Вы уверены, что для свойства country_id
вашей модели ничего не установлено при печати раскрывающегося списка? Для меня работает следующее, если экземпляр $model
создается с помощью оператора new Country()
, но не путем заполнения свойств из базы данных:
<?php echo $form->dropDownList(
$model,
'country_id',
Country::items(),
array(
'empty'=>'--Select a country--')
);
?>
Прочитайте документацию . Есть параметр "подсказка".
Попробуйте это:
<?php
echo $form->dropDownList($model,'country_id',Country::items(), array(
'prompt' => '--Select a country--'
));
?>
Более подробную информацию смотрите здесь http://www.yiiframework.com/forum/index.php/topic/11195-how-to-edit-the-default-option-in-dropdownlist/
Вы всегда можете сделать что-то вроде array_merge в своем методе items
public static function items()
{
return array_merge(array(''=>'--Select a country--'), CHtml::listData(Country::model()->findAllBySql(
'SELECT * from country'),
'id', 'name'));
}
Я полагаю, что вы ищете:
echo $form->dropDownList($model,'country_id',Country::items(),array('prompt'=>''));
Если вы используете yiibooster, возможно, это поможет
<?php echo $form->dropDownListGroup(
$model,
'kode_cuti_sub2',
array(
'empty'=>'--Select a country--',
'widgetOptions' => array(
'data' => array('Something ...', 'Pilih Jenis Cuti'=>Chtml::listData(Cuti::model()->cuti_sub2(),'kode','jenis_cuti')),
'options' => array(
'placeholder' => 'Pilih NIP Pegawai',
'width' => '100%',
),
),
'wrapperHtmlOptions' => array(
'class' => 'col-sm-5',
),
)
); ?>
В моем случае это сработало