Как сделать YII генерировать раскрывающий список от известных пользователей?
-
26-10-2019 - |
Вопрос
Я только начинаю учиться использовать yii, и уже удалось сделать некоторые основные вещи.
Допустим, у меня есть две простые таблицы: «Пользователи» и «Проекты», где отношение составляет от 1 до многих (один пользователь может иметь много проектов)
Я сгенерировал CRUD, используя GII, но на странице «Создать/редактировать пользователь» это не предоставляет раскрывающийся список, а только текстовое поле, в которое мне нужно ввести идентификатор пользователя.
При редактировании проекта я хотел бы иметь раскрывающий список, в котором я могу выбрать пользователя (поэтому элемент должен отображать список имен пользователей).
Я предполагаю, что GII не может генерировать контроллер и просмотреть код для этого
Что будет лучшей практикой для этого?
Я уже объявил об отношениях, как указано в http://www.yiiframework.com/doc/guide/1.1/en/database.arr
public function relations()
{
return array(
'projects_rel'=>array(self::BELONGS_TO, 'Users', 'user_id'),
);
}
а также
public function relations()
{
return array(
'users_rel'=>array(self::HAS_MANY, 'Projects', 'project_id'),
);
}
Решение
Найдите пример кода для создания списка пользователей
<?php
$form = $this->beginWidget('CActiveForm', array(
'id' => 'project-form',
'enableAjaxValidation' => true,
));
?>
<?php echo $form->dropDownList($model, 'user_id',
CHtml::listData(Projects::model()->with('projects_rel')->findAll(), 'id', 'username'),
array('style'=>'width:150px;')
); ?>
Другие советы
Проверьте эти расширения GII для генерации расширенных CRUD:
- Коллекция шаблонов GII (FullModel, FullCrud)
- Последняя разработка на GitHub
- Giix
Оба способны отображать формы с входными данными. GTC использует виджет соотношения для этих входов, которые можно настроить.
Не забудьте покончить
$ this-> refermajaxvalidation ($ model)
На контроллере или вам придется создать элементы вместо одного!