2012-04-27 2 views
1

最大100個のフィールドでいくつかの大きなフォームを設定します。Symfony2:大型フォームのベストプラクティス

私の質問は、このようなフォームの取り扱いに関するベストプラクティスがあるかどうかです。特に

  1. エンティティ関係
  2. Formオブジェクト、それは自己

誰かがこのようなタスクについての経験を持っていますか? サブフォームでjQueryで構造化された1つのエンティティ、1つのフォームにまとめてもよいでしょうか、できるだけ多くの属性をグループ化する必要がありますか?

よろしく、 ボードー

答えて

1

直接エンティティにリンクされているフォームの公式ドキュメントのショー多くの例のに対し、私はこれが最善のアプローチではないと思います。まれに、あなたのフォームがあなたのエンティティとまったく同じフィールドを持っているときは、それは良いことです。

あなたのフォームは、ブラウザで取得したものを表す必要があります。したがって、html inputs/textearea/selectだけを入力してください。私は通常、エンティティのように、検証制約を保持し、フォームと同じ構造を持つformDataクラスを作成します。

フォームをロードする前に、あなたの持続件のデータを使用してこのFORMDATAオブジェクトを初期化し、提出後、あなたはFORMDATAオブジェクトを使用してエンティティを更新する必要が...

+0

こんにちは、私はこのソリューションのメリットを理解していませんか? formDataにすべての属性があり、エンティティの順序付き属性にマップされることを意味しますか? – bodokaiser

+0

私のFormDataオブジェクトは、エンティティ上ではなくフォーム上にマッピングされます。それは与えられたエンティティからそのプロパティを設定する方法を知っています – AlterPHP

1

私は複数から構築されているいくつかの複雑なフォームを作成していますエンティティ。私は各エンティティのためにcreate a form classを作成し、必要なフォームのさまざまな組み合わせを保持するコンポジットフォームクラスを作成します(これはPéCéの提案と似ています)。

フィールドのすべてを必要としない場合は、どのフィールドをツリーテンプレートでレンダリングするかを制御することができます。フォームクラスにないフィールドが必要な場合は、それらをテンプレートに追加して、フォームデータを適切に処理できます。このような努力のために、複数のエンティティとバンドルのフォームを再利用するための検証と柔軟性を組み込んだものをいくつか取得します。

+0

こんにちは、私はFormTyleClassは必要ありません。これは私がすでに使っているものです。私の質問は、多くの属性を持つエンティティ/フォームをできるだけシンプルに保つ方法です。 1つの提案は、属性をグループ化し、サブ属性を配列に保存することです。今私はこの問題を他の方法で処理する方法に興味があります – bodokaiser

関連する問題