YII2 dropdownlist (випадаючий список), web-sprints
Фреймворк yii2 надає безліч корисних функцій для генерації HTML коду, одна з таких - dropdownlist . Ця функція належить класуHTML і використовується в уявленнях для відображеннявипадаючого списку :

Перш ніж використовувати методdropdownlist необхідно на початку файлу, нашого подання оголосити класHTML :
Зараз існує два способи використання цієї функції:
- Через екземпляр класActiveForm
- Безпосередньо через статичний класHTML
Я волію користуватися другим способом через його стислості, але ми розглянемо обидва варіанти. Для об'єктаActiveForm код буде виглядати так:
У цьому коді ми через метод field, класу ActiveForm, задаємо модель і викликаємо функціюdropDownList. Давайте відразу ж розглянемо другий варіант, а потім поговоримо про параметри цієї функції.
Як видно, обидва способи не сильно відрізняються.
Аргументи в dropdownlist
Функція dropdownlist приймає 4 аргументи, якщо оголошена через клас HTML і 2 якщо оголошена через клас ActiveForm, тому що в даному випадку перші два параметри встановлюються з функції field. Розглянемо всі 4 аргументи:
- $name — ім'я поля форми, яке встановлюється для подальшого оброблення запиту на сервері. У прикладі вище видно рядок - name = cat, це значення і встановлює даний параметр.
- $selected — другий параметр служить визначення значення за промовчанням, тобто присвоює певному полю option значення selected. Але застосування даної властивості відрізняється для способу використання dropdownlist по цьому ми розглянь його докладніше нижче.
- $items — приймає одновимірний масив, з якого генерує поля option, де value — ключі масиву, а вміст між тегами — значення ключів масиву. Також розглянемо цей параметр докладніше.
- $options (не обов'язковий аргумент) - масив із параметрами. Докладніше тут.
Значення в dropdownlist
Третій аргумент $items визначає, які будуть значення в нашому списку. Найчастіше разом з dropdownlist використовується функція map() класу ArrayHelper для того, щоб модель класу ActiveRecord перетворити на необхідний масив. Наприклад: