2

Yii フレームワークと gii ツールを使用して、いくつかのテーブルの crud 機能を作成し始めています。

問題は、通常、生成されたコードを変更する必要があることです。たとえば、すべてのフォームがテキスト入力のみを使用していることに気付きました。たとえば、外部キーの場合、ユーザーが主キーを挿入しなくても他のテーブルのレジスタを選択できる選択を表示する必要があります。

関連するビュー (_view.php、_form.php、...) を変更してこれを実現します。私の問題は、データベースを変更してコードを再生成する必要があるときに始まります。その場合、テーブルごとに移動し、関連するファイルを1つずつ更新して、古い変更を維持する必要があります。

この状況にうまく対処する方法はありますか?

4

4 に答える 4

2

GiiX拡張機能は、関係のドロップダウンを生成します。

Giiモデル生成を使用する場合、GiiXはより優れたモデルも生成します。

于 2012-05-30T15:47:32.843 に答える
1

外部キーをドロップダウンとして表示するオプションを使用して、crud フォーム生成の機能が数回必要になる場合は、独自の gii テンプレートを作成してそれを行うことができます。ガイドを参照して、その方法を確認してください。

于 2012-05-30T09:43:10.367 に答える
1

あなたはそれをする必要はありません。たとえば、外部キーを使用して選択を生成できます。

<?php echo CHtml::dropDownList('ModelName[language_id]',$model->language_id,CHtml::listData(Language::model()->findAll(), 'id', 'name'), array('prompt'=>'Select Language')); ?>

最初のパラメーターは選択の名前、2 番目は値 (更新する場合は値が選択されます)、3 番目はデータ、4 番目は html オプションの配列です。CHtml::dropDownListおよびCHtml::listDataに関する詳細情報。

これでlanguage_idは、 が外部キーで、Languageテーブルにはidnameフィールドがあります。これにより、次のように、使用可能なすべての言語の選択が生成されます: 1=> 英語、2=> ドイツ語など。

于 2012-05-30T08:53:04.957 に答える
0

この機能を使用するには、既存のgiiツールの機能を継承するgiiツールを開発する必要があります。つまり、CRUDの作成中に既存のクラスを変更する必要があります。これは特定の要件です。giiツールは、すべてのユーザーに適した一般的な機能のみを提供します。

于 2012-05-30T09:52:40.103 に答える