链接两个字段选择类型symfony2

时间:2013-06-08 19:30:27

标签: symfony symfony-2.1 symfony-forms

我使用Symfony2,我想看看如何使用表单事件链接两个字段选择类型。 第一个字段包含城市,第二个字段包含国家/地区。

这是我的实体:

user
  - id
  - name
  - IdCity

city
  - id
  - CityName
  - IdCountry

country
  - id
  - countryName

谢谢你。

1 个答案:

答案 0 :(得分:0)

解决方案#1

在没有javascript的情况下工作,使用javascript增强,无需重新加载,小城市金额

创建显示所有城市的实体字段类型一个选择字段,然后使用 group_by 按国家/地区分组。

  • 使用javascript(type =“hidden”)
  • 隐藏您的单个分组选择字段
  • 将带有JavaScript的选择字段拆分为组的国家/地区字段,并为城市添加第二个字段
  • 如果国家触发onchange事件,则更改城市字段
  • 如果城市字段触发onchange事件
  • ,则更改隐藏字段

这样您就可以保存创建第二个表单所需的代码,注入当前的国家/地区,使用第二个查询构建器进行过滤...如果您确实有很多城市(即使有缓存的结果,您输出的数量也太多) ......寻求解决方案#2。

解决方案#2

大量城市,因此需要按照国家/地区选择加载城市

  • 为国家
  • 创建一个包含实体字段类型的表单
  • 将当前选定的国家/地区传递到您的表单 - 默认为空(即从您的操作或注入请求并从那里读取)
  • 为城市
  • 创建实体字段类型的子表单
  • 如果从请求中读取的所选国家/地区为空 - 请勿将子表单添加到构建器
  • 如果存在 - >添加子表单并使用queryBuilder city字段类型按国家/地区过滤城市
  • 通过AJAX加载国家/地区选择
  • 上的子表单进行增强

希望你明白这一点:)