2012-01-10 9 views
0

私はちょうどyiiを使うことを学び始めており、既に基本的なことをやっています。Yiiで既知のユーザーからドロップダウンリストを生成するにはどうすればいいですか?

のは、私は2つの単純なテーブルがあるとしましょう:私はGIIを使用してCRUDを生成しますが、「作成中にいる

(1人のユーザーが多くのプロジェクトを持つことができます)多くの「ユーザー」と関係が1である「プロジェクト」/edit user page "ドロップダウンを提供するのではなく、ユーザー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

パブリック関数のプロジェクト()メソッドでリレーションを定義した理由は、すべてのリレーションはrelations()メソッド –

+0

ラプスマヌス、私の謝罪に行く必要があります。関数はpublic function relations()です。元の投稿を今修正しました – Martin

答えて

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

あなたが有用であると投票した場合 –

+0

私はあなたを非常に便利に見つけました!残念ながら私はあなたに投票する15未満です。申し訳ありません – Martin

3

チェックアウト延長CRUDsを生成するためのこれらのGII拡張子:

上の両方がすることができます関係inpを使ってフォームをレンダリングするuts。 GTCはこれらの入力にリレーションウィジェットを使用してカスタマイズすることができます。

0

は、コントローラ上

ます$ this-> performAjaxValidation($モデル)

のコメントを解除するか、あなたの代わりに一つで作成されたアイテムを持っています忘れないでください!

関連する問題