0

ビューにフォームを提供する MVC があります。フォーム コンテンツ、つまりラベルなどのフォーム要素と、選択などのフォーム入力を提供するための最善の方法を考えています。フォーム要素は頻繁に変更され、複数のページにまたがる多くの異なるバージョンを持つ可能性があります。

私は 3 つのアプローチを考えましたが、どれも私には満足できませんでした。

  • フォームの各バージョンは、完全に html で記述され、目立たないビューとして保存されます。

長所:特定の要素セットが必要な場合は、コントローラーから 1 行のコードでビューを呼び出すことができます。

短所:私は何十ものビューで終わるでしょう。

  • 負荷をコントローラーに移し、要素名の配列をビューに渡しますarray('select' => array('label' => "element 1", 'class => "big"), 'select', 'input', 'input')。これにより、配列が取得され、フォーム要素としてマークアップに解析されます。

長所:ビューを 1 つだけ持つことができ、コントローラー レベルでビューにロードするフォーム要素のセットを指定できます。

短所:私のコントローラーは、数行のコードから数百行の配列定義にすぐに移行します。

  • 要素のセットをシリアル化し、それらをデータベースに格納して、いつでも呼び出されるようにします。

長所:コントローラーでの数行のコードと 1 つのビュー ファイル。

短所:フォーム要素のいずれかのセットを変更するのは非常に面倒です。新しいセットを含めたり、変更を加えたりする必要があるときはいつでも、データベースにアクセスして、シリアル化を解除してシリアル化する必要があります。

同じフォームの異なるバージョンをテンプレート化し、フォーム要素の互換性を可能にするために、どのようなアプローチをお勧めしますか?

4

1 に答える 1

0

フォーム メソッドのライブラリを構築し、適切なコントローラーを拡張できます。私は通常、永久データ用のライブラリまたは「ヘルパー」クラスを構築し、コントローラーを統一して整頓します。そうすることclass Form_Dataで、個々のフォーム要素を構築する専用のメソッドを持つことができる場所にコントローラーを簡単に拡張することができ、また、懸念の分離を強制することができます。

于 2013-05-11T04:40:48.867 に答える