ビューにフォームを提供する MVC があります。フォーム コンテンツ、つまりラベルなどのフォーム要素と、選択などのフォーム入力を提供するための最善の方法を考えています。フォーム要素は頻繁に変更され、複数のページにまたがる多くの異なるバージョンを持つ可能性があります。
私は 3 つのアプローチを考えましたが、どれも私には満足できませんでした。
- フォームの各バージョンは、完全に html で記述され、目立たないビューとして保存されます。
長所:特定の要素セットが必要な場合は、コントローラーから 1 行のコードでビューを呼び出すことができます。
短所:私は何十ものビューで終わるでしょう。
- 負荷をコントローラーに移し、要素名の配列をビューに渡します
array('select' => array('label' => "element 1", 'class => "big"), 'select', 'input', 'input')
。これにより、配列が取得され、フォーム要素としてマークアップに解析されます。
長所:ビューを 1 つだけ持つことができ、コントローラー レベルでビューにロードするフォーム要素のセットを指定できます。
短所:私のコントローラーは、数行のコードから数百行の配列定義にすぐに移行します。
- 要素のセットをシリアル化し、それらをデータベースに格納して、いつでも呼び出されるようにします。
長所:コントローラーでの数行のコードと 1 つのビュー ファイル。
短所:フォーム要素のいずれかのセットを変更するのは非常に面倒です。新しいセットを含めたり、変更を加えたりする必要があるときはいつでも、データベースにアクセスして、シリアル化を解除してシリアル化する必要があります。
同じフォームの異なるバージョンをテンプレート化し、フォーム要素の互換性を可能にするために、どのようなアプローチをお勧めしますか?