2014-03-27 1 views
3

내 연구는 Symfony 2 폼 콜렉션을 테마로하는 다양한 방법을 발견했지만, 지금까지 여러 개의 중첩 된 폼의 form_rows를 구별 할 수있는 방법을 발견하지 못했습니다. 그것들을 다르게 표시하도록하십시오.Symfony 2에서 콜렉션 테마, 중첩 된 폼의 각 레벨에 따라 다릅니다.

나는 3 중첩 된 폼을 가지고 있는데, 컬렉션의 여러 (DB 지원) 섹션을 포함하는 최상위 Main으로 구성되며 각 섹션에는 컬렉션에 여러 DB 관련 질문이 들어 있습니다. DIV를 사용하여 섹션의 레이아웃을 제어하고 싶지만 테이블을 사용하여 각 질문 세트의 레이아웃을 제어하고 싶습니다.

<div id="main"> 
    <div id="section1"> 
     <table> 
      <tr>Question 1</tr> 
      <tr>Question 2</tr> 
     </table> 
    </div> 
    <div id="section2"> 
     <table> 
      <tr>Question 3</tr> 
      <tr>Question 4</tr> 
     </table> 
    </div> 
</div> 

나는 하나의 전체 양식을 위해, 내가 행을 렌더링 할 form_row 기능에 의해 사용되는 템플릿 조각을 변경하는 방법을 이해하고, 그러나 여기에서 나는 열 적어도 두 가지 유형을 원한다. 두 가지 다른 템플릿 조각을 사용하여 두 가지 방법으로 작동하는 자신 만의 form_row 함수를 만들 수 있다고 생각하지 않습니다.

한 레벨의 필드를 다른 레벨과 완전히 다르게 렌더링하려면 어떻게해야합니까?

+0

CSS 스타일링을 사용해 보셨습니까? 선택자를': first' 또는': nth-child (2)'로 두 섹션에 규칙을 적용 할 수 있습니다. –

+1

당신은 여전히 ​​테마를 사용할 것입니다. 중첩 된 콜렉션을 렌더링하는 섹션에서 현재 요소가 얼마나 깊은 지 확인할 필요가 있습니다. 내 생각 엔 현재 요소의 부모에 대한 재귀 확인을 수행하는 것이고, 부모가없는 경우에는 최상위 레벨에 있고, 1이면 두 번째 레벨에 있고 두 번째 부모는 세 번째에 있고 등등. – Chausser

+0

@ n.1 감사합니다. CSS를 사용하는 것이 한 가지 방법 일 수 있다는 점에 동의합니다. 가능한 한 Symfony 테마를 사용하고 싶습니다. (이 영역의 다른 대부분의 작업에서와 같이) – frumious

답변

0

그래서이 교수형에 맡기지 않고 대답하겠습니다.

내가 물어 본 것은 @ Chausser의 제안 된 중첩 감지 기술을 통해 기술적으로 불가능할 수도 있지만, 적어도 어렵거나 다루기 힘들다.

마지막으로 Symfony의 일반 customised Form rendering features 을 사용하여 문제를 해결했습니다. 각 필드 등을 자세한 Twig 템플릿의 정확한 위치에 정확히 추가하십시오. 나는 묻는 순간에 Symfony 2에 완전히 익숙하지 않았고 이것이 가능하다는 것을 깨닫지 못했습니다!