<select>
要素に追加データを付けて要素をレンダリングしたいと思い<option>
ます。例として、選択の変更時に別の入力値をリセットするサービス セレクター (非複数エンティティ フィールド) が必要です。JS データ構造の使用には興味がありません。レンダリングされたフィールドを次のようにする必要があります。
<select name="...">
<option value="1" data-price="90">Service 1</option>
<option value="2" data-price="40">Service 2</option>
</select>
私は2つの異なる解決策を取り、両方に対する答えを見て喜んでいます.
form
小枝に渡した変数を使用して上記の HTML コードのアセンブルを開始することにより、Twig でフィールドを手動でレンダリングします。これを解決するには2つの問題があります。A)name
ファイルの名前を指定する安全な方法が見つかりません。つまり、変数を使用して Symfony が期待する属性を取得するにはどうすればよいですかform.service
(service は FormType 内のフィールドの名前です)。[フィールドが現在Symfony によってどのように命名されているかを観察することに基づいて、いくつかの値を連結するトリックを省いてください。リバース エンジニアリングではなく、インターフェイスに依存する必要があります。] B)選択肢のリストにアクセスする方法がわかりません。つまり、entity
フィールドのquery_builder
オプション。[私は一般的な解決策を探しているので、これらの項目をコントローラーの twig-parameter に複製するつもりはありません。そのような提案を避けるためです。]- クックブックのフォーム スタイリングの章で提案されているように、関連するフィールド ブロックのレンダリングをオーバーライドしますが、それには 3 つの問題があります。A)どのブロックをオーバーライドする必要があるかわかりません (そのため、サンプルが見つかりません)。B)フォーム ビルダーからブロックにパラメーターを渡して、
data-
レンダリングする追加の属性を知らせますが、これを行う方法がわかりません。最後にC)標準のレンダリングから逸脱する必要がない場合 (フィールドが複数の場合など)、デフォルトのレンダリングにフォールバックする方法がわかりません。
したがって、これらは実際には 5 つの質問 (1A、1B、2A、2B、2C) ですが、選択フィールドのレンダリングに関して文書化されていないと私が考える問題にすべて対処しているため、他の人が一緒に回答する方が役立つと思いました。