Раскрывающийся список 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')
                                 )
     )); 
?>

Таким образом, я могу выбрать опцию по умолчанию, но не могу установить для нее пустое значение, только страны, полученные из модели: элементы.

Есть идеи?

Author: coppettim, 2013-04-17

5 answers

Вы уверены, что для свойства country_id вашей модели ничего не установлено при печати раскрывающегося списка? Для меня работает следующее, если экземпляр $model создается с помощью оператора new Country(), но не путем заполнения свойств из базы данных:

<?php echo $form->dropDownList(
    $model,
    'country_id',
    Country::items(),
    array(
        'empty'=>'--Select a country--')
    );
?>
 20
Author: Ezze, 2013-04-17 11:08:17

Прочитайте документацию . Есть параметр "подсказка".

Попробуйте это:

<?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/

 12
Author: Bogdan Burim, 2013-04-17 11:13:51

Вы всегда можете сделать что-то вроде array_merge в своем методе items

public static function items()
{
return array_merge(array(''=>'--Select a country--'), CHtml::listData(Country::model()->findAllBySql(
                            'SELECT * from country'), 
                            'id', 'name'));
}
 1
Author: Soyale, 2013-04-17 11:24:11

Я полагаю, что вы ищете:

echo $form->dropDownList($model,'country_id',Country::items(),array('prompt'=>''));
 1
Author: D.Mill, 2014-09-23 11:03:20

Если вы используете 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',
                ),
            )
        ); ?>

В моем случае это сработало

 0
Author: Sonef, 2015-06-26 02:12:38