0

私は Symfony2 を使用しており、フォーム イベントを使用して 2 つのフィールドの選択タイプをリンクする方法を確認したいと考えています。最初のフィールドには都市が含まれ、2 番目のフィールドには国が含まれます。

ここに私のエンティティがあります:

user
  - id
  - name
  - IdCity

city
  - id
  - CityName
  - IdCountry

country
  - id
  - countryName

そしてありがとうございました。

4

1 に答える 1

0

解決策 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 で読み込むことで拡張

アイデアが得られることを願っています:)

于 2013-06-08T23:01:25.113 に答える