2012-02-03 56 views
2

我有从数据库加载的复选框(我使用实体字段类型)的形式。复选框是区域和区域。我有以下数据库模式:Symfony2自定义表格

+-----------------------------------+ 
| 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> 

回答

1

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

0

的EntityType领域:

  • 多=真
  • 扩大=真
  • 属性= '名'
  • 类= 'YourBundle:YourEntity'
  • query_builder ='function(EntityRepository $ er){return $ er-> createQueryBuilder('r') - >其中( 'r.parentId IS NOT NULL') - > ORDERBY( 'r.parentId', 'ASC') - > ORDERBY( 'r.name', 'ASC');}”
+0

这没有帮助。结果将按'name'进行排序,但是我需要按** name **排序的** Region **和** Dictricts **组合的结果。 – kuboslav 2012-02-03 12:13:01

+0

你是否在你的实体(parentId)上定义了自反关系?无论如何,你不能用EntityType字段带来的原生query_builder来做到这一点。你必须定义一个自反关系,用INDEX BY DQL查询得到你的实体的良好排序,并将结果发送到* choices *选项中。 – AlterPHP 2012-02-03 13:36:01

+0

你能解释什么是_reflexive relation_? – kuboslav 2012-02-03 13:53:20