YIIに既知のユーザーからドロップダウンリストを生成するにはどうすればよいですか?
-
26-10-2019 - |
質問
私はちょうど使用することを学び始めています 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を生成します。
- GIIテンプレートコレクション (FullModel、FullCrud)
- 最新の開発 github
- giix
どちらも、関係入力を備えたフォームをレンダリングできます。 GTCは、カスタマイズできるこれらの入力に関係ウィジェットを使用します。
忘れずに忘れずに
$ this-> performajaxvalidation($ model)
コントローラーでは、1つではなく作成されたアイテムが必要です。
所属していません StackOverflow