J'ai une liste déroulante dans mon modèle _form et je veux ajouter une valeur vide (que je veux par défaut). J'ai les éléments suivants: In _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'); ?>
Dans le pays modèle:
public static function items()
{
return CHtml::listData(Country::model()->findAllBySql(
'SELECT * from country'),
'id', 'name');
}
Même mon option vide est dans la première ligne de la liste déroulante, le premier pays dans la liste apparaît par défaut.
J'ai essayé:
<?php echo $form->dropDownList($model,'country_id',
Country::items(),array('empty'=>'--Select a country--',
'options'=>
array(
'3'=>array('selected'=>'selected')
)
));
?>
De cette façon, je peux choisir l'option par défaut, mais je ne peux pas la définir comme valeur vide, uniquement les pays issus du modèle: items.
Une idée?
Êtes-vous sûr que la propriété country_id
de votre modèle n'est définie sur rien lorsque vous imprimez la liste déroulante? Ce qui suit fonctionne pour moi si l'instance $model
est créée à l'aide de l'opérateur new Country()
mais pas en renseignant les propriétés de la base de données:
<?php echo $form->dropDownList(
$model,
'country_id',
Country::items(),
array(
'empty'=>'--Select a country--')
);
?>
Lire documentation . Il y a le paramètre 'Invite'.
Essaye ça:
<?php
echo $form->dropDownList($model,'country_id',Country::items(), array(
'Prompt' => '--Select a country--'
));
?>
Voir plus de détails ici http://www.yiiframework.com/forum/index.php/topic/11195-how-to-edit-the-default-option-in-dropdownlist/
Vous pouvez toujours faire quelque chose comme array_merge dans votre méthode items
public static function items()
{
return array_merge(array(''=>'--Select a country--'), CHtml::listData(Country::model()->findAllBySql(
'SELECT * from country'),
'id', 'name'));
}
Je crois que tu cherches:
echo $form->dropDownList($model,'country_id',Country::items(),array('Prompt'=>''));
si vous utilisez yiibooster cela aidera peut-être
<?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',
),
)
); ?>
dans mon cas ça a marché