2012-01-10 40 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($模型)

控制器上的或你必須創建的項目,而不是一個!