Как создать свой dropdownlist в yii2?

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

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

Как создать свой dropdownlist в yii2?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

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

@wilburn 

Для создания списка выбора (dropdownlist) в Yii2 следует использовать виджет DropDownList. Этот виджет генерирует HTML-код для выпадающего списка, который можно настроить с помощью массива опций.


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

1
2
3
4
<?= $form->field($model, 'attribute')->dropDownList(
    $items,           // массив элементов для списка
    ['prompt' => '']  // опции списка, например, пустой элемент
) ?>


Здесь $model – это модель, а attribute – имя атрибута модели, который будет использоваться для хранения выбранного значения.


$items – это массив элементов для списка, который можно определить самостоятельно или получить из базы данных. Он должен иметь следующий формат:

1
2
3
4
5
$items = [
    'value1' => 'Label 1',
    'value2' => 'Label 2',
    ...
];


Здесь ключи – это значения элементов списка, которые будут сохраняться в атрибуте модели, а значения – это подписи элементов, которые будут отображаться в списке.


Опции можно передать в виде массива вторым параметром метода dropDownList(), например, чтобы добавить пустой элемент в начало списка, используйте опцию prompt:

1
['prompt' => 'Выберите значение...']


Также можно использовать другие опции, например, options и clientOptions, чтобы настроить внешний вид списка и поведение виджета на клиентской стороне.

1
2
3
4
5
6
7
8
<?= $form->field($model, 'attribute')->dropDownList(
    $items,
    [
        'prompt' => 'Выберите значение...',
        'options' => ['value1' => ['disabled' => true]],
        'clientOptions' => ['width' => '200px'],
    ]
) ?>


Этот код создаст список выбора на основе модели $model и атрибута attribute, который будет содержать элементы с ключами value1, value2 и т.д. В начале списка будет добавлен пустой элемент с надписью "Выберите значение...". Этот элемент будет отображаться в поле формы, если ни один элемент списка не выбран. Для элемента с ключом value1 будет задано свойство disabled, чтобы его нельзя было выбрать. На клиентской стороне ширина списка будет равна 200 пикселам.

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

от stanford_mosciski , 6 месяцев назад

@wilburn 

Для создания собственного выпадающего списка (dropdownlist) в Yii2, вы можете использовать виджет DropDownList или непосредственно генерировать HTML-код записей <select> и <option>. Ниже приведен пример кода создания собственного выпадающего списка без использования виджета:

1
2
3
4
5
<select name="my-dropdown">
    <option value="value1">Label 1</option>
    <option value="value2">Label 2</option>
    <!-- Добавьте столько <option> записей, сколько вам нужно -->
</select>


В приведенном HTML-коде <select name="my-dropdown"> создает выпадающий список с именем my-dropdown. <option value="value1">Label 1</option> и <option value="value2">Label 2</option> представляют собой элементы списка с значениями value1 и value2, и текстами Label 1 и Label 2 соответственно.


Если вам нужно использовать созданный выпадающий список в форме Yii2, то следует поместить его в представлении внутри тега ActiveForm:

1
2
3
4
5
6
7
8
<?= Html::beginForm('', 'post', ['class' => 'form-horizontal']); ?>

<?= Html::dropDownList('my-dropdown', null, [
    'value1' => 'Label 1',
    'value2' => 'Label 2',
], ['prompt' => 'Выберите значение...']); ?>

<?= Html::endForm(); ?>


Здесь Html::dropDownList() является методом для создания выпадающего списка в Yii2. Аргументы метода - имя списка (my-dropdown), выбранное значение (null), массив элементов для списка ($items), и опции списка (['prompt' => 'Выберите значение...']).


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