Страница 1 из 1
Добавление dropDownList на форму
Добавлено: 2018.06.13, 16:06
dymsonn
Здравствуйте. Я только начал изучать Yii2. Не могу понять, как добавить dropDownList в файл представления _form. Пытаюсь Объекту добавить адрес. В базе есть таблицы Object , есть Address и Fo, Region(область,край и т.д.). Смысл их думаю понятен. Уточнение, таблица Address является связующей для Объекта и Фед. округа и Региона и содержит в себе id этих таблиц. А таблица Объекта содержит в себе id таблицы Аddress. Автогенерацией созданы модели, контроллеры и представления для всех таблиц, кроме Address. Теперь не понимаю, как мне добавить dropDownList в представление которое отображает создание нового объекта с адресом. Точнее, я добавил его:
Код: Выделить всё
<?= $form->field($model, id_address)-> dropDownList(ArrayHelper::map(Fo::find()->all(), 'id_region','name'))?>
Но при нажатии кнопки Создать, пишет , что Getting unknown property: app\models\Object::id_fo.
Не могу понять, как добавить поле таблицы, если оно не связано напрямую через модель? Или это возможно только при прописывании связи hasMany в модели?
Re: Добавление dropDownList на форму
Добавлено: 2018.06.13, 17:17
dymsonn
Выяснил, что ошибка была из за привил валидации. Убал оттуда id_fo и код заработал. Только как правильно тогда добавить правило проверки для поля Федеральный округ? Я дописывал в rules()[ id_fo => null]. Но id_fo в представлении это имя Федерального округа.Просто не знаю как правильно, описать имя,если во всех таблицах это name. Поэтому оставил id_fo как сгенерировал Gii, только вывожу имя.
Re: Добавление dropDownList на форму
Добавлено: 2018.06.13, 17:24
andku83
структуру таблиц покажите
Re: Добавление dropDownList на форму
Добавлено: 2018.06.13, 17:36
dymsonn
(object)
id_obj
name
id_address
(address)
id_address
id_fo
id_region
name
(fo)
id_fo
name
Извиняюсь что в таком виде. просто с другого компьютера пишу.
Re: Добавление dropDownList на форму
Добавлено: 2018.06.13, 17:50
andku83
Код: Выделить всё
ArrayHelper::map(Address::find()->all(), 'id_address','name')
// или
Address::find()->select(['name','id_address'])->indexBy('id_address')->column()
Либо у вас что-то неверно спроектировано.
Если у адреса hasOne(Fo), то возможно вы хотите получить вариант с адресом в комплекте с фо:
Код: Выделить всё
Address::find()->select(['name' => new \yii\db\Expression('CONCAT(address.name, " ", fo.name)'),'id_address'])
->joinWith('fo fo')->indexBy('id_address')->column()
Re: Добавление dropDownList на форму
Добавлено: 2018.06.13, 17:59
dymsonn
Это я вывожу name из Address. а как вывести name из Fo, при условии, что связь getFo не прописана?
Re: Добавление dropDownList на форму
Добавлено: 2018.06.13, 18:01
andku83
прописать вроде не проблема, но если хочется поразбираться
https://www.yiiframework.com/doc/api/2. ... n()-detail
Re: Добавление dropDownList на форму
Добавлено: 2018.06.13, 18:02
dymsonn
Если у адреса hasOne(Fo), то возможно вы хотите получить вариант с адресом в комплекте с фо:
Код: Выделить всё
Address::find()->select(['name' => new \yii\db\Expression('CONCAT(address.name, " ", fo.name)'),'id_address'])
->joinWith('fo fo')->indexBy('id_address')->column()
[/quote]
Вечером буду пробовать,отпишусь что получилось.
Re: Добавление dropDownList на форму
Добавлено: 2018.06.18, 11:00
dymsonn
спасибо это помогло