omko
(Omko)
July 15, 2010, 2:07pm
1
Имеется вот такая конструкция:
<?php echo $form->dropDownList($model, ‘type_id’, CHtml::listData(Types::model()->findAll(), ‘id’, ‘name’)); ?>
Она генерит дропдаунлист из всех значений, но надо добавить пустое значение по умолчанию
Как это сделать правильно?
raa
(Rudenkosasha)
July 15, 2010, 2:21pm
2
echo $form->dropDownList($model, 'type_id', array_merge(array('0' => 'пустое значение'), CHtml::listData(Types::model()->findAll(), 'id', 'name')));
omko
(Omko)
July 15, 2010, 2:42pm
3
Как-то сложнова-то
Вот нашёл другой способ, более кошерный
<?php echo $form->dropDownList($model, 'type_id', CHtml::listData(Types::model()->findAll(), 'id', 'name'), array('empty'=>'All Types')); ?>
Есть ещё другие варианты сделать Дропдаунлист малой кровью?
raa
(Rudenkosasha)
July 15, 2010, 2:50pm
4
ух ты, надо документацию внимательней читать )
Dals
(Webtool Dals)
July 15, 2010, 3:40pm
5
omko:
Как-то сложнова-то
Вот нашёл другой способ, более кошерный
<?php echo $form->dropDownList($model, 'type_id', CHtml::listData(Types::model()->findAll(), 'id', 'name'), array('empty'=>'All Types')); ?>
Есть ещё другие варианты сделать Дропдаунлист малой кровью?
есть еще способ, довольно грязный:
<?php echo $form->dropDownList($model, 'type_id', array(''=>'--all--')+CHtml::listData(Types::model()->findAll(), 'id', 'name')); ?>
andy_s
(Arekandrei)
July 15, 2010, 3:53pm
6
А чем вам не нравится текущий вариант с "empty"? По-моему, уменьшать код уже некуда, если только не "обёртывать" его в другой метод для более красивого кода в представлении.
delancer
(Delancer)
May 4, 2011, 12:39am
7
Делать вывод из модели в представлении это глупо… лучше "Types::model()->findAll()" в контроллере занести в переменную и передать в представление…
Sasha:
echo $form->dropDownList($model, 'type_id', array_merge(array('0' => 'пустое значение'), CHtml::listData(Types::model()->findAll(), 'id', 'name')));
Твой вариант тоже хорошо, т.к. при использовании array(‘empty’=>’ Выберите производителя’) получим значение поля будет пустым, а при слиянии массива получим нуль, что может быть кстати при некоторой логике приложения.
lexand
(Dorogikh Alexander)
September 23, 2011, 11:43am
9
я так делаю
echo $form->dropDownList($model,'status',array(""=>"") + Order::getStatuses());
именно array(""=>"") + …
yiijeka
(yiijeka)
October 5, 2012, 8:09am
10
Если так делать, то при multiple=>true первое значение будет всегда выбрано (selected). Лучше использовать ‘empty’=>true
Ivashkin
(Ti 073)
October 5, 2012, 10:53am
11
$form->dropDownList($model, 'entity_id', CHtml::listData(Entity::model()->findAll(), 'id', 'name'), array('empty' => 'Please select'));
mixjay
(Mixjay)
March 5, 2015, 1:08pm
12
Подскажите пожалуйста, как правильно это сделать для Yii 2.x?
Обязательно ли в БД (MySQL, InnoDB) поле должно быть по умолчанию NULL?
mixjay
(Mixjay)
March 5, 2015, 5:00pm
13
NoobYii <img src='http://www.yiiframework.com/forum/public/style_emoticons/default/happy.gif' class='bbc_emoticon' alt='^_^' />:
Подскажите пожалуйста, как правильно это сделать для Yii 2.x?
Обязательно ли в БД (MySQL, InnoDB) поле должно быть по умолчанию NULL?
Как решение, в форме:
<?= $form->field($model, 'key_page_category')
->dropDownList(ArrayHelper::map(Category::find()->all(), 'category_id', 'category_name'),
array('prompt'=>'Без категории') )
?>
Чтобы по умолчанию был 0, а не NULL, добавила в модель:
public function rules()
{
return [
....
['key_page_category', 'default', 'value' => 0]
];
}
ineersa
(Ineersa)
March 10, 2015, 8:00am
14
Не буду дублировать, просто оставлю здесь