2013-04-17 10 views
8

У меня есть dropdownlist в моей модели _form, и я хочу добавить пустое значение (которое я хочу по умолчанию). У меня есть следующие: В _form:Yii Dropdown List Пустое значение по умолчанию

<?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'); 
} 

Даже мой пустой параметр в первой строке в DropDownList, то первая страна в списке показывает по умолчанию.

Я пробовал:

<?php echo $form->dropDownList($model,'country_id', 
    Country::items(),array('empty'=>'--Select a country--', 
          'options'=> 
          array(
           '3'=>array('selected'=>'selected') 
           ) 
    )); 
?> 

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

Любая идея?

ответ

19

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

<?php echo $form->dropDownList(
    $model, 
    'country_id', 
    Country::items(), 
    array(
     'empty'=>'--Select a country--') 
    ); 
?> 
+0

country_id это ничего не устанавливать. Эта модель $ - еще одна модель, которая имеет country_id как FK. 'country' => array (self: BELONGS_TO, 'Country', 'country_id') и в модели страны: 'team' => array (self :: HAS_MANY, 'Team', 'country_id') ... I имеют этот же код в других приложениях, и он работает .. только в том случае, тот же код .. dont works ... – coppettim

+1

Извините, моя ошибка BIG, я установил в базе данных, что country_id в tbl_team имеет значение по умолчанию = 1. .. – coppettim

1

Вы всегда можете сделать что-то вроде 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

Я считаю, что Youre ищут:

echo $form->dropDownList($model,'country_id',Country::items(),array('prompt'=>'')); 
0

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

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

Смежные вопросы