Как заставить Yii генерировать раскрывающийся список от известных пользователей?

Я только начинаю учиться использовать 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'),
    );
}

person Martin    schedule 10.01.2012    source источник
comment
почему вы определили отношения в методе проектов общественных функций () все отношения должны перейти к методу отношений ()   -  person Suriyan Suresh    schedule 10.01.2012
comment
Lapsus manus, мои извинения. Функция - это общественные отношения(). Я исправил исходный пост.   -  person Martin    schedule 10.01.2012


Ответы (3)


Найдите пример кода для создания списка пользователей

<?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;')
                ); ?>
person Suriyan Suresh    schedule 10.01.2012
comment
Я нашел вас очень полезным! но, к сожалению, у меня меньше 15 голосов, чтобы проголосовать за вас. Извините - person Martin; 21.01.2012

Проверьте это расширение gii для создания расширенных CRUD:

Оба могут отображать формы с входными данными отношения. GTC использует виджет отношений для этих входных данных, который можно настроить.

person schmunk    schedule 01.02.2012

Не забудьте раскомментировать

$this->выполнитьAjaxValidation($model)

на контроллере, иначе вам придется создавать элементы вместо одного!

person elmig    schedule 16.03.2013