2012-01-10 42 views
0

我刚开始学习使用yii,并已设法做一些基本的东西。如何让Yii从已知用户生成下拉列表?

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

我一直在使用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'), 
    ); 
} 
+0

为什么你在public function projects()方法中定义了关系所有关系都应该去关系()方法 – 2012-01-10 13:41:52

+0

Lapsus manus,我的道歉。函数是公共函数关系()我现在纠正了原来的帖子 – Martin 2012-01-10 14:27:50

回答

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;') 
       ); ?> 
+0

如果我发现有用的话给我投票 – 2012-01-11 08:16:22

+0

我确实发现你非常有用!但不幸的是我有不到15票给你投票 – Martin 2012-01-20 23:12:59

3

结帐这些GII扩展生成扩展CRUDs:

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

0

不要忘了取消注释

$这个 - > performAjaxValidation($模型)

控制器上的或你必须创建的项目,而不是一个!