【问题标题】:Symfony2 custom formSymfony2 自定义表单
【发布时间】:2012-02-03 11:50:52
【问题描述】:

我的表单带有从数据库加载的复选框(我使用实体字段类型)。复选框是地区和地区。我有以下数据库架构:

+-----------------------------------+
| id | parent_id | name             |
+-----------------------------------+
| 1  | NULL      | Region           |
+-----------------------------------+
| 2  | 1         | District         |
+-----------------------------------+
| 3  | 1         | Another district |
+-----------------------------------+
| 4  | NULL      | Another region   |
+-----------------------------------+
| 5  | 4         | Next district    |
+-----------------------------------+

问题是我需要以下表格。怎么做?

<b>Region</b><!-- Loaded from database -->
<!-- Dictricts ordered by name -->
<input type="checkbox" id="someId" value="3"><label for="someId">Another district</label>
<input type="checkbox" id="someId" value="2"><label for="someId">District</label>
<b>Another region</b><!-- Loaded from database -->
<!-- Dictricts ordered by name -->
<input type="checkbox" id="someId" value="5"><label for="someId">Next district</label>

【问题讨论】:

    标签: forms symfony doctrine-orm symfony-forms


    【解决方案1】:

    感谢this post 我已经通过自定义渲染表单模板解决了这个问题。

    【讨论】:

      【解决方案2】:

      带有选项的实体类型字段:

      • multiple = true
      • 扩展 = 真
      • 属性 = '名称'
      • class= 'YourBundle:YourEntity'
      • query_builder = 'function (EntityRepository $er) {return $er->createQueryBuilder('r') ->where('r.parentId IS NOT NULL') ->orderBy('r.parentId', 'ASC')->orderBy('r.name', 'ASC');}'

      【讨论】:

      • 这无济于事。结果将按name 排序,但我需要按name 排序的每个区域中的RegionDictricts 分组的结果。
      • 您是否在您的实体(在 parentId 上)定义了自反关系?无论如何,您不能使用带有 EntityType 字段的本机 query_builder 来做到这一点。您必须定义自反关系,使用 INDEX BY DQL 查询对实体进行良好排序,然后在 choices 选项中发送结果...
      • 你能解释一下什么是反身关系吗?
      • 在这种情况下,您的区域实体通过 parentId 属性与自身相关。与注释映射类似的东西:@ManyToOne(targetEntity="Territory"); @JoinColumn(name="parent_id", referencedColumnName="id") 在 parentId 属性上。见doctrine-project.org/docs/orm/2.0/en/reference/…
      猜你喜欢
      • 2012-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多