В Yii Framework 1, когда я получаю данные из базы данных и хочу поместить значения ключей в опции выбора поля ввода, я использую этот код в контроллере:
$roleDataProvider = CHtml::listData(Role::model()->findAll(), 'id', 'description');
При работе с Yii Framework 2.0 у меня нет CHtml :: listData (). Что я должен использовать, чтобы приблизиться к тому же результату? Спасибо!
Попробуй это:
<?php $dataList=ArrayHelper::map(Category::find()->withoutSubs()->asArray()->all(), 'id', 'name'); ?>
<?= $form->field($model, 'category_id')->dropDownList($dataList); ?>
@Arkanon: вот использование, связанное с приведенным выше кодом. В вашем контроллере:
$dataList = ArrayHelper::map(ModelClass::findOne($id)->all(), 'column_id', 'column_username');
$model = new ModelClass();
return $this->render('viewpage', ['modelXX' => $model, 'keyZZ' => $dataList]);
В вашем viewpage.php:
$form = ActiveForm::begin(['id' => 'form-id']);
$form->field($modelXX, 'user_id')->dropDownList($keyZZ, ['class' => 'class_name', 'id' => 'id_name']);
ActiveForm::end();
Теперь у вас должен быть выпадающий список, заполненный данными, поступающими из базы данных. Значением выпадающего списка является «column_id», а метка выпадающего списка — «column_username».