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

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

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

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

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

@kenya 

В Yii2 для создания выпадающего списка можно использовать класс ActiveForm в сочетании с классом Html. Вот простой пример:

1
2
3
4
5
<?= $form->field($model, 'category')->dropDownList([
    '1' => 'Категория 1',
    '2' => 'Категория 2',
    '3' => 'Категория 3',
], ['prompt'=>'Выберите категорию']) ?>


В этом примере мы используем метод dropDownList() для создания выпадающего списка. Параметр $model - это модель, с которой мы работаем. В данном случае мы создаем список для атрибута category.


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


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


Также можно добавлять другие опции, например, чтобы задать атрибуты для тега <select> или добавить классы стилей.

1
2
3
4
5
6
7
8
9
<?= $form->field($model, 'category')->dropDownList([
    '1' => 'Категория 1',
    '2' => 'Категория 2',
    '3' => 'Категория 3',
], [
    'prompt' => 'Выберите категорию',
    'class' => 'form-control',
    'id' => 'category-list',
]) ?>


В этом примере мы добавили опции 'class' и 'id' для тега <select>, чтобы применить стили CSS и определить идентификатор для списка.

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

от krista , 3 месяца назад

@kenya 

Также можно использовать модель ActiveRecord для создания выпадающего списка. В этом случае значения для списка будут браться из базы данных. Например:


1 2 3


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