0

私はyiiの使い方を学び始めたばかりで、すでにいくつかの基本的なことを行うことができました。

2つの単純なテーブルがあるとします。「users」と「projects」で、関係は1対多です(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'),
    );
}
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 に答える