通过Symfony2中的AJAX将模型中的数据加载到表单字段中。正确的方法

时间:2013-02-27 19:26:35

标签: ajax api symfony

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

1) City
2) Shop

他们的关系一对多

例如:

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

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

第一步:

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

select box

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

第二步:

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

enter image description here

确定。现在我的问题:

1)如何向数据模型发出请求?(我感兴趣的不是JS代码,而是后端架构。我应该做API,还是从控制器请求数据到同一页面?)

2)如何看待代码部分实现此表单的类?

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。