在我的应用程序中,我使用了两个实体。
1) City
2) Shop
他们的关系一对多
例如:
- Barcelona:city
-- Decathlon:shop
-- Salewa:shop
- New York:city
-- Puma:shop
-- Nike:shop
第一步:
通过下拉列表,用户选择一个城市:
它通过更改列表的值来引发事件。此时,javascript代码必须请求并获取所选城市的所有商店。
第二步:
显示第二个下拉列表,其中包含所选城市的商店值。
确定。现在我的问题:
1)如何向数据模型发出请求?(我感兴趣的不是JS代码,而是后端架构。我应该做API,还是从控制器请求数据到同一页面?)
2)如何看待代码部分实现此表单的类?
答案 0 :(得分:1)
1)请求。最好的方法是通过单独的控制器进行JSON响应。这里的一切都很简单。
2)表格。这个问题更有趣。城市下拉列表应该是城市实体的未映射字段。 Shop字段应该是一个简单的Shop实体字段,如果您没有表单中的默认城市(字段选项中为'choices' => array()
),或者选择{{1 }} 选项。当您在选择城市后从后端获得响应时,只需将所有可能的选项附加到商店下拉列表中,其中包含商店ID作为其值。
答案 1 :(得分:0)
有许多关于实现这一点的思想流派,但我个人非常喜欢将整个关系发送到视图并使用javascript管理切换,所以这样的事情会这样做:
return $this->render('YourBundle:Controller:index.html.twig', array(
'cities' => $cities_with_shops_json,
'form' => $form->createView(),
));
javascript部分只是捕获事件,但谷歌中有很多例子。 http://javascript.about.com/library/bldydrop1.htm
这样做的一个优点是每次用户点击选择时都会避免使用ajax。