Пример DropDownList yii 2.0

Я использую yii 2.0 Framework. Как я могу сделать варианты из моей базы данных. Я нашел это, но это yii 1.1:

<?php echo CHtml::dropDownList('listname', $select, 
          array('M' => 'Male', 'F' => 'Female'));

Я хочу передать его в форму:

<?php $form->dropDownList() ?>

Как я могу заполнить свой выпадающий список из моей таблицы базы данных?


person pvaitonis    schedule 27.10.2014    source источник


Ответы (3)


Используйте yii\helpers\Html, он содержит Html::dropDownList().

echo Html::dropDownList('listname', $select, ['M'=>'Male', 'F'=>'Female']);

Проверьте API Yii Framework 2.0

Контроллер

public function actionSomething() {
    $sexes = ['M'=>'Male', 'F'=>'Female'];  
    $this->render('yourView', ['sexes'=>$sexes]);
}

Просмотреть

<?php
::
    echo Html::dropDownList('listname', $select, $sexes);
::
?>
person Barry    schedule 27.10.2014
comment
Я использую виджет ActiveForm, можно ли передать туда параметры? Каков наилучший способ? Создание и массив в контроллере, у меня нет английских примеров (: - person pvaitonis; 27.10.2014
comment
Вы можете создать массив в контроллере, но я обычно создаю массив в представлении. Хранятся ли выпадающие значения в базе данных или это просто несохраненный список значений? - person Barry; 27.10.2014
comment
Да, значения хранятся в базе данных. Можете ли вы привести пример того, как передать их из контроллера? - person pvaitonis; 27.10.2014
comment
Я вижу в вашем вопросе, что выбранные значения поступают из таблицы базы данных. Создайте модель методом .f.i. getSexes(), которые возвращают массив. - person Barry; 27.10.2014

Если вы используете виджет ActiveForm, используйте это:

<?php 
    $items = ArrayHelper::map(Model::find()->all(), 'id', 'name');
    $form->field($model, 'attribute')->dropDownList($items)
?>
person olchick    schedule 04.11.2014

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

    use yii\helpers\ArrayHelper;

    <?php 
        $city = \app\models\City::find()->all(); 
        $listData=ArrayHelper::map($city,'cityId','cityName'); 
    ?>    
    <?= $form->field($model, 'cityId')->dropDownList($listData,['prompt'=>'Choose...']) ?>
person Sadia Naseeba    schedule 14.07.2015