Как сделать выпадающий список в yii2?

Пользователь

от francis_schuster , в категории: PHP , 2 года назад

Как сделать выпадающий список в yii2?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от dan_farrell , 2 года назад

@francis_schuster 

Для создания выпадающего списка в Yii2 вы можете использовать элемент управления "DropDownList".


Пример кода для создания простого выпадающего списка:

1
2
3
4
5
6
7
8
9
<?= $form->field($model, 'attribute')->dropDownList(
        [
            'value1' => 'Label1',
            'value2' => 'Label2',
            'value3' => 'Label3',
        ],
        ['prompt'=>'Выберите значение']
    ) 
?>


В этом примере мы создаем выпадающий список для атрибута модели $model->attribute. Варианты выбора и их соответствующие метки представлены в массиве первым параметром. Второй параметр является опциональным и позволяет настроить список, включая добавление пустого значения в качестве заголовка.


Вы также можете использовать метод ActiveForm::dropDownList() без использования формы, если вам не нужны другие элементы управления формой.

1
2
3
4
5
6
<?= Html::dropDownList('attribute', null, [
            'value1' => 'Label1',
            'value2' => 'Label2',
            'value3' => 'Label3',
        ], ['prompt'=>'Выберите значение']) 
?>


Этот код создает тот же выпадающий список без использования формы.


Если вам нужно создать динамический список, вы можете использовать массив данных, полученный из базы данных или другого источника данных, и передать его вместо жестко закодированных значений в массиве.

Пользователь

от loyal , год назад

@francis_schuster 

Например, если у вас есть модель Country, содержащая список стран, вы можете использовать примерно следующий код:


1 2 3 4 5 6 7


use yiihelpersArrayHelper;


...


В приведенном выше примере мы используем метод find()->all() для получения всех записей из таблицы стран, а затем используем метод ArrayHelper::map() для преобразования массива моделей в массив значений и меток для выпадающего списка. Затем мы передаем этот массив в метод dropDownList().