PHP プロジェクトで symfony 1.4 を使用しています。ユーザー構成に応じて拡張される可能性のあるフォームがあります。ユーザーが追加のラベルまたはタスクの予算を選択した場合、この情報はフォーム クラスに埋め込まれ、フォーム パーシャル (追加の入力) でウィジェットとして表示される必要があります。
例えば:
管理者は、予算やラベルを付けずに基本的なタスクのみを実行したいと考えています。新しいタスクを編集または作成するときは、TasksForm ウィジェットのみが表示されます。
管理者は、ラベルを使用して基本的なタスクを実行したいと考えています。TasksForm が表示され、ユーザーがラベルを選択できる追加のフィールドが表示されます。
管理者はすべてのオプション (ラベル + 予算) を希望しています
db の関係は次のとおりです。
Tasks:
columns:
name: string(127)
created_at: timestamp
updated_at: timestamp
Budget:
columns:
task_id: integer
budget_prognosis: integer
budget_used: integer
relations:
Tasks:
local: task_id
foreign: id
type: one
TaskHasLabel:
columns:
task_id:
type: integer
primary: true
label_id:
type: integer
primary: true
relations:
Tasks:
local: task_id
foreign: id
type: one
onDelete: CASCADE
Labels:
local: label_id
foreign: id
type: one
onDelete: CASCADE
Labels:
columns:
name: string(127)
relations:
Tasks:
class: Task
local: label_id
foreign: task_id
refClass: TaskHasLabel
目的は、フォームの構成を簡単に変更し、将来的に新しい構成オプションを追加することです。組み合わせごとに個別のフォームを作成することでこれを実行できることはわかっていますが、繰り返したくありません。もう 1 つのアイデアは、すべてのフィールドを 1 つのフォームにまとめて非表示にすることですが、私には良いアイデアとは思えません。フォームコンストラクターのパラメーターを介して構成を考えましたが、それもわかりません。この状況でのベストプラクティスは何ですか?