変更も送信もされないデータをレンダリングするための表示専用フィールドが必要です。
ブートストラップの静的コントロールに似ています。
フォームの構造やスタイルを壊さずに、フォーム内にオブジェクトデータを表示する必要があります。このデータで他のすべての入力と同じテンプレートを使用したいのですが、動的入力としてレンダリングする必要はありません。
私はこれを達成するためのいくつかの方法を考えました。いくつかは単純なハックであり、他はより正当に見えるものもありますが、これを行うためのより標準的な方法があるかどうかはわかりません。
これが私が考えたオプションのリストです。順不同です。
フィールドには読み取り専用プロパティを使用します。あまり快適ではありません。ユーザーに何かを変更できると感じてほしくないのですが、何らかの理由で許可されていません。
テンプレートをハックして、入力要素以外のものを出力します。送信時に欠落しているフィールドをサーバー側で処理する必要があることに加えて、私には非常に厄介なようです。
フィールドタイプを拡張して、表示専用バージョンを作成します。これは安全ではないと思います。
ジョブを実行するためのカスタムfieldTypeを記述します。このオプションは、他のフィールドの基本タイプとして使用すると便利です。
最善の解決策はオプション3または4のいずれかだと思います。私がまだ見つけていないのは、送信時に欠落しているフィールドを処理する方法だけです。
フォームタイプのロジックを再利用できるため、このタイプのフィールドを用意することが重要だと思います。そうしないと、次のような小枝テンプレートを作成することになります。
<form>
{# This is the average writtable field #}
{{ form_row(form.field1) }}
{# This is the display-only field, notice I have to replicate
markup. Even if I wrote a macro, which I did, I would still
have to replicate markup in the macro.
#}
<label>Field 2</label>
<div>{{ the_object.field2 }}</div>
</form>
そして最後に、誰かがより良いアイデアを持っているか、このアプローチが完全に欠陥があると思いますか?