解決策 1
(javascriptなしで動作、javascriptで強化、リロード不要、小さな都市量)
すべての都市を表示するエンティティ フィールド タイプの選択フィールドを1 つ作成し、 group_byを使用して国別にグループ化します。
- グループ化された単一の選択フィールドをjavascriptで非表示にします( type="hidden" )
- JavaScript を使用して選択フィールドをグループの国フィールドに分割し、2 つ目の都市フィールドを追加します
- 国がonchangeイベントを発火した場合、都市フィールドを変更します
- 都市フィールドが onchange イベントで発火した場合、非表示フィールドを変更します
このようにして、2 番目のフォームを作成し、現在の国を挿入し、2 番目の queryBuilder でフィルター処理するために必要なコードを保存しています...都市がたくさんある場合 (キャッシュされた結果であっても、出力が多すぎます)...解決策 2 に進みます。
解決策 2
(膨大な数の都市があるため、国の選択でフィルタリングされた都市をロードする必要があります)
- 国のエンティティ フィールド タイプを含むフォームを作成する
- 現在選択されている国をフォームに渡します-デフォルトはnullです(つまり、アクションから、またはリクエストを挿入してそこから読み取ります)
- 都市のエンティティ フィールド タイプのサブフォームを作成する
- リクエストから読み取った選択した国が null の場合 - サブフォームをビルダーに追加しないでください
- 存在する場合 -> サブフォームを追加し、queryBuilder city フィールド タイプを使用して国別に都市をフィルタリングします
- country-select のサブフォームを AJAX で読み込むことで拡張
アイデアが得られることを願っています:)