0

我刚刚开始学习使用yii,并且已经设法做一些基本的事情。

假设我有两个简单的表:“用户”和“项目”,其中关系是一对多(一个用户可以有很多项目)

我已经使用 GII 生成了 CRUD,但是在“创建/编辑用户页面”中,它不提供下拉菜单,而只提供一个我需要输入用户 ID 的文本字段。

编辑项目时,我希望有一个下拉列表,我可以在其中选择用户(因此该元素应显示用户名列表)。

我假设 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'),
    );
}
4

3 回答 3

6

找到生成用户列表的示例代码

<?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;')
                ); ?>
于 2012-01-10T13:44:01.883 回答
3

查看这些用于生成扩展 CRUD 的 gii 扩展:

两者都能够使用关系输入呈现表单。GTC 对这些可以自定义的输入使用关系小部件。

于 2012-02-01T21:42:24.957 回答
0

不要忘记取消注释

$this->performAjaxValidation($model)

在控制器上,否则您将不得不创建项目而不是一个!

于 2013-03-16T11:56:49.550 回答