私はいくつかの解決策を試しましたが、これが私の意見による最良の結果です。
ステップ1。
別の twig ファイルで tableSheet を生成するためのマクロの作成 (後で他のフォームで使用するため)。
{# in Default:form.html.twig #}
{% macro tablesheet(name, rows, colums, titles) %}
... titles header ...
{% for i in 1..rows %}
{% for j in 1..colums %}
<input name="{{ name }}_{{ i }}{{ j }}" type="text" class="flat-form" />
{% endfor %}
{% endfor %}
{% endmacro %}
ステップ2。
テンプレートの追加/編集で、マクロをインポートして入力フィールドのテーブルを作成します。
{% import "ProjectSomeBundle:Default:form.html.twig" as forms %}
...
{{ form_widget(form) }}
{{ forms.tablesheet('table1', 4, 3, {0:'col1', 1:'col2', 2:'col3'}) }}
{{ forms.tablesheet('table2', 7, 3, {0:'col1', 1:'col2', 2:'col3'}) }}
...
</form>
ステップ3。
フォームをシリアル化/逆シリアル化する jQuery 関数を作成します (この場合、フラットフォーム クラス attr を持つ入力要素)。serilize には、http://css-tricks.com/snippets/jquery/serialize-form-to-json/のようなものを使用しました。シリアル化された値は、文字列としてフィールドされた単一のエンティティに格納され、そのように db に保存されます。
仕組み:
編集フォームを開くと、jQuery はそのエンティティ フィールドからデータを逆シリアル化し、テーブルシートの入力フィールドにロードしました。サーバーに送り返す(投稿する)前に、値が収集され、シリアル化された関数を介して同じフィールドに入れられます。