YIIに既知のユーザーからドロップダウンリストを生成するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/8804001

質問

私はちょうど使用することを学び始めています yii, 、そしてすでにいくつかの基本的なことをすることができました。

2つの単純なテーブルがあるとしましょう:「ユーザー」と「プロジェクト」は、関係が多くの人に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'),
    );
}
役に立ちましたか?

解決

ユーザーリストを生成するサンプルコードを見つけます

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

他のヒント

これらのGII拡張機能をチェックアウトして、拡張されたCRUDを生成します。

どちらも、関係入力を備えたフォームをレンダリングできます。 GTCは、カスタマイズできるこれらの入力に関係ウィジェットを使用します。

忘れずに忘れずに

$ this-> performajaxvalidation($ model)

コントローラーでは、1つではなく作成されたアイテムが必要です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top