0

このタイプのデータをフォームに含める必要があります。

value11, value12, value13 ...
value21, value22, value23
value31, value32, value33 
value41, value42, value43
...

フォームは次のようになります。

フォームデザイン

それを自動的に行うことができるフォームの種類はありますか、またはフォームを手動で作成する必要がありますか? コレクション型もありますが、私の場合は合いそうにありません。このテーブル シートからデータをシリアル化し、単一の db テーブル列 (エンティティ クラスの単一プロパティ) にストーリー化する予定です。

この例で示されているテーブル シートのデータ型を格納するより良い方法はありますか? 独自のエンティティ プロパティにすべての値を保持することはできません。その形式には多くのテーブル データが存在するためです。

4

2 に答える 2

3

x 、 y 、および value プロパティを持つエンティティ クラスを作成する必要があります。

x & y は一意の組み合わせであり、マトリックス内の位置を表します。

このエンティティはデータベースに保存する必要はなく、フォームの生成にのみ使用できます。

次に、このマトリックス形式でフィールドをレンダリングするフォーム コレクションを作成します。

最後に: DataTransformer を使用して、必要に応じてエンティティのコレクションを配列に変換します。

配列をデータベースに保存します。

于 2013-06-08T04:28:04.297 に答える
0

私はいくつかの解決策を試しましたが、これが私の意見による最良の結果です。

ステップ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 はそのエンティティ フィールドからデータを逆シリアル化し、テーブルシートの入力フィールドにロードしました。サーバーに送り返す(投稿する)前に、値が収集され、シリアル化された関数を介して同じフィールドに入れられます。

于 2013-06-13T13:26:46.903 に答える