【问题标题】:link two fields select type symfony2链接两个字段选择类型 symfony2
【发布时间】:2013-06-04 21:08:00
【问题描述】:

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

这是我的实体:

user
  - id
  - name
  - IdCity

city
  - id
  - CityName
  - IdCountry

country
  - id
  - countryName

谢谢。

【问题讨论】:

  • 你想选择国家然后城市?选择国家后会重新生成带有城市的选择元素吗?我是对的?

标签: symfony symfony-2.1 symfony-forms


【解决方案1】:

解决方案 #1

(不使用javascript,使用javascript增强,无需重新加载,少量城市)

创建一个选择显示所有城市的entity field-type字段并使用group_by按国家分组。

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

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

解决方案 #2

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

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

希望你能明白 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多