0

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

这是我的实体:

user
  - id
  - name
  - IdCity

city
  - id
  - CityName
  - IdCountry

country
  - id
  - countryName

谢谢你。

4

1 回答 1

0

解决方案#1

无需 javascript 工作,使用 javascript 增强,无需重新加载,小城市数量

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

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

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

解决方案#2

大量城市,因此需要加载按国家选择过滤的城市

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

希望你明白:)

于 2013-06-08T23:01:25.113 回答