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

StackOverflow https://stackoverflow.com/questions/8804001

Вопрос

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

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

Не забудьте покончить

$ this-> refermajaxvalidation ($ model)

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top