2

在我的应用程序中,我使用了两个实体。

1) City
2) Shop

他们有一对多的关系

例如:

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

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

第一步:

通过下拉列表,用户选择一个城市:

选择框

它通过更改列表的值来引发事件。此时,javascript 代码必须请求并获取所选城市的所有商店。

第二步:

显示第二个下拉列表,其中包含所选城市的商店值。

在此处输入图像描述

好的。现在我的问题:

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

这样做的一个好处是避免每次用户单击选择时调用 ajax。

于 2013-02-27T20:32:35.687 回答