@Tokenchik

Как получить drop down из связанной таблицы?

В сгенерированные gii формы надо добавить dropDownList в который будут заходить данные из связанной через hasOne таблицы. Как это сделать правильно? Нашел пока просто создание поля отдельным виджетом, как можно еще сделать, только пожалуйста хотя бы с примером.
UPD:
Пока что сделано таким образом:
<?= $form->field($model, 'state_id')->dropDownList(\yii\helpers\ArrayHelper::map(\app\modules\admin\models\State::find()->all(), 'id', 'state')) ?>

Подскажите пожалуйста, верно или нет?
  • Вопрос задан
  • 330 просмотров
Решения вопроса 3
slo_nik
@slo_nik Куратор тега Yii
Добрый день.
Можно сделать при помощи dropDownList()
Примерно так:
<?= $form->field($model, 'region_id')->dropDownList(ArrayHelper::map(Regions::getAllName(), 'id', 'name_ru')); ?>
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Допустим есть в Вашей моделе связь country связанная по id и country_id, а в ней есть id и title, тогда так:
<?= $form->field($model, 'country_id')->dropDownList(ArrayHelper::map(Country::find()->all(),'id','title')) ?>

как вариант, вынести в модель Country логику:
public static function getDropDown(){
return ArrayHelper::map(self::find()->all(),'id','title');
}

и тогда:
<?= $form->field($model, 'country_id')->dropDownList(Country::getDropDown()) ?>
Ответ написан
@vyrkmod
Пишу на php. И не стыдно.
// тянем значения из которых будем выбирать
$rawList = RelatedModel::find()->select(['id', 'title'])->asArray()->all();
// приводим к виду [значение input'а => то что написано для пользователя]
$list = ArrayHelper::map($rawList, 'id', 'title');
// во вьюхе
$form->field($model, 'related_model_id')->dropDownList($list);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы