Как передать массив в dropDownList Yii2 Active Form?

В Yii2, для передачи массива значений в dropDownList Active Form, существует несколько способов. Рассмотрим три наиболее распространенных способа:

1. С использованием статического метода ArrayHelper::map():

use yiihelpersArrayHelper;

$items = ['1' => 'Option 1', '2' => 'Option 2', '3' => 'Option 3'];

echo $form->field($model, 'attribute')->dropDownList(
    ArrayHelper::map($items),
    ['prompt' => 'Select an option']
);

В этом примере мы передаем в dropDownList результат работы метода ArrayHelper::map(), который преобразует исходный массив значений $items в ассоциативный массив, где ключами будут значения из исходного массива, а значениями будут соответствующие им названия опций для dropDownList. Метод ArrayHelper::map() позволяет работать с массивами любой сложности и структуры, что делает его очень удобным инструментом при работе с dropDownList в Yii2.

2. С использованием модели и ее метода getList() или getDropdownList():

use appmodelsSomeModel;

$model = new SomeModel();

echo $form->field($model, 'attribute')->dropDownList(
    $model->getList(),
    ['prompt' => 'Select an option']
);

В этом примере мы создаем экземпляр модели SomeModel и вызываем у него метод getList(), который должен возвращать массив значений для dropDownList. Метод getList() может быть реализован в модели как угодно и возвращать array, где ключами будут значения для dropDownList, а значениями будут названия опций.

3. Прямая передача массива значений:

$items = ['1' => 'Option 1', '2' => 'Option 2', '3' => 'Option 3'];

echo $form->field($model, 'attribute')->dropDownList(
    $items,
    ['prompt' => 'Select an option']
);

В этом примере мы просто передаем исходный массив значений $items в dropDownList Active Form. Ключами массива будут значения для dropDownList, а значениями будут названия опций.

В каждом из примеров мы также передаем параметр ['prompt' => 'Select an option'], который устанавливает текст заголовка для пустого значения в dropDownList. Вы можете изменить этот текст на любой другой, если необходимо.

Надеюсь, эти примеры помогут вам передать массив значений в dropDownList Yii2 Active Form.