От автора: приветствую вас, друзья. Мы продолжаем цикл статей, посвященных знакомству с фреймворком Yii2. В этой статье мы с вами поработаем с выпадающими списками формы и познакомимся с методом Yii2 dropdownlist, который и позволяет добавить для формы выпадающий список.
Итак, в прошлой статье мы воспользовались методом dropDownList и получили HTML код выпадающего списка select. При этом мы использовали только первый обязательный параметр данного метода, т.е. массив категорий. Напомню, метод dropDownList принимает первым параметром массив, ключи которого будут значениями элементов списка, а значения массива будут текстовыми элементами списка. Суть, думаю, понятна.
Однако, кроме первого параметра dropdownlist может работать и со вторым, необязательным. В качестве него мы можем передать массив опций (настроек) списка. Давайте попробуем использовать второй параметр.
Полезной возможностью будет добавить в выпадающий список некоторый пояснительный текст. Сейчас у нас сразу идет список категорий, но неплохо было бы вставить туда строку, к примеру, Выбор категории. Сделать это поможет опция prompt:
1 2 3 4 5 6 |
<?= $form->field($model, 'category_id')->dropDownList( \yii\helpers\ArrayHelper::map($cats, 'id', 'name'), [ 'prompt' => 'Выбор категории', ] ) ?> |
Таким же образом мы можем передавать и прочий набор опций, например class или id, которые могут участвовать в оформлении списка.
Также возможно вы захотите сделать активным другой элемент списка по умолчанию, т.е. использовать атрибут selected. Это можно сделать так:
1 2 3 4 5 6 7 8 9 10 |
<?= $form->field($model, 'category_id')->dropDownList( \yii\helpers\ArrayHelper::map($cats, 'id', 'name'), [ 'prompt' => 'Выбор категории', 'id' => 'test', 'options' => [ '2' => ['Selected' => true] ] ] ) ?> |
Ключом массива options будет как раз искомое значение списка, которое должно быть выбрано по умолчанию.
Интересной возможностью может быть реализация группированного списка. Такая возможность достаточно специфична, но тем не менее. Реализуем искусственный пример. Для этого нам необходим многомерный массив, который мы и передадим параметром для построения списка:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php $items = [ 'Группа 1' => [ 0 => 'Элемент 1.1', 1 => 'Элемент 1.2', 2 => 'Элемент 1.3', ], 'Группа 2' => [ 3 => 'Элемент 2.1', ], 'Группа 3' => [ 4 => 'Элемент 3.1', 5 => 'Элемент 3.2', ], ]; ?> |
А теперь генерирование списка:
1 2 3 |
<?= $form->field($model, 'category_id')->dropDownList( $items ) ?> |
И результат в браузере:
На этом, пожалуй, остановимся. Больше о фреймворке вы можете узнать из наших бесплатных или платных уроков. Также создание простейшего блога на Yii2 можно посмотреть в этом цикле уроков.