2012-02-03 5 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 필드 :

  • query_builder : = 'YourEntity YourBundle'

    • 여러 = 사실
    • 확대 = 사실
    • 특성 = '이름'
    • 클래스 = 'function (EntityRepository $ er) {return $ er-> createQueryBuilder ('r ') - > 여기서 ('r.parentId는 NULL NOT IS') -> 해 orderBy ('r.parentId', 'ASC') -> 해 orderBy ('r.name', 'ASC');}
  • +0

    이렇게하면 도움이되지 않습니다. 결과는'name'으로 정렬 될 것입니다. 그러나 ** region **과 ** Dictricts **에 의해 그룹화 될 결과가 필요합니다. 각 영역에서'name'으로 정렬됩니다. – kuboslav

    +0

    부모 엔티티에서 반사적 관계를 정의합니까? 어쨌든, EntityType과 함께 가져온 기본 query_builder를 사용하여이를 수행 할 수는 없습니다. 당신은 반사적 관계를 정의하고 INDEX BY DQL 쿼리로 엔티티를 잘 정렬하고 결과를 * choices * 옵션으로 보내야합니다 ... – AlterPHP

    +0

    _reflexive relation_이 무엇인지 설명해 주시겠습니까? – kuboslav

    관련 문제