2

私のアプリケーションでは、2 つのエンティティを使用しています。

1) City
2) Shop

彼らは一対多の関係を持っています

例えば:

- Barcelona:city
-- Decathlon:shop
-- Salewa:shop

- New York:city
-- Puma:shop
-- Nike:shop

最初の一歩:

ユーザーはドロップダウン リストから都市を選択します。

セレクトボックス

リストの値を変更することでイベントを発生させます。この時点で、JavaScript コードは、選択された都市のすべての店舗を要求して取得する必要があります。

第二段階:

選択した都市の店舗の値を含む 2 番目のドロップダウン リストを表示します。

ここに画像の説明を入力

Ok。今私の質問:

1)データモデルへのリクエスト方法は? (JS コードではなく、バックエンド アーキテクチャに関心があります。API を実行するか、コントローラーから同じページにデータを要求する必要がありますか?)

2) このフォームのクラスを実装するコードの部分はどのように見えるべきですか?

4

2 に答える 2

1

1)リクエスト。最良の方法は、別のコントローラーを介した JSON 応答です。ここではすべてが非常に簡単です。

2)フォーム。この質問はもっと興味深いです。City ドロップダウンは、City Entityのマップされていないフィールドである必要があります。'choices' => array()Shop フィールドは、フォーム (フィールド オプション) に既定の都市がない場合、選択肢のない単純な Shop エンティティ フィールドにするか、オプションですべての既定の都市のショップを選択するようにしquery_builderます。都市を選択した後にバックエンドから応答を受け取ったら、値としてショップ ID で構成されるすべての可能なオプションをショップ ドロップダウンに追加します。

于 2013-02-27T21:38:59.267 に答える
0

これを実装することについては多くの考え方がありますが、私は個人的にビューへの関係全体を送信し、javascript で切り替えを管理することの大ファンなので、次のようにします。

return $this->render('YourBundle:Controller:index.html.twig', array(
        'cities' => $cities_with_shops_json,
        'form'   => $form->createView(),
    ));

JavaScript の部分はイベントをキャプチャしているだけですが、Google には多くの例があります。 http://javascript.about.com/library/bldydrop1.htm

これの利点の 1 つは、ユーザーが選択をクリックするたびに ajax 呼び出しを回避できることです。

于 2013-02-27T20:32:35.687 に答える