2014-01-30 2 views
2

2 개의 엔티티가 있습니다. 프로젝트 및 카테고리가 있습니다. 나는이 둘 사이에 ManyToMany 관계가 있습니다. 카테고리는 "industry"엔터티와 ManytoOne 관계가 있습니다 현재 프로젝트와 산업간에 직접적인 관계가 없으므로이 기능을 추가 검색 기능으로 유지하고 싶습니다. 따라서 카테고리 테이블에는 모든 산업 카테고리가 포함됩니다.Symfony/twig의 그룹화 된 체크 박스

양식 위젯을 사용하여 프로젝트를 편집 할 때 양식을 작성할 때 내 범주 테이블에 나열된 모든 범주를 나타내는 확인란 목록이 있습니다.

업계별로 카테고리를 선택하고 싶습니다. 양식 레이아웃에서만 어떻게 수행 할 수 있습니까? 어떻게 나뭇 가지 위젯 양식 데이터에서 업계 가치를 추출하고 업계 실체별로 확인란을 그룹화 할 수 있습니까?

답변

3

감사 Leevi, 나는 산업 및 카테고리 관련 기관을 모두 사용하여 위의 제안을 구현하는 방법을 찾을 수 없습니다

은 ... 나는 마지막으로이 방법을 발견 이 문제를 해결하려면 간단한 방법이 있는지 말해주세요.하지만 지금은 완벽하게 작동합니다.

이 컨트롤러 내 형태

$form = $this->createFormBuilder($project) 
      ->add('categories', 'entity', array(
       'class' => 'ACMEProjectBundle:Category', 
       'property' => 'name', 
       'expanded' => true, 
       'multiple' => true, 
       ->getForm(); 

I는 렌더링 된 형태로 각각의 형태의 관련 카테고리 목록

$industries = $this->getDoctrine()->getManager()->getRepository('ACMEProjectBundle:Industry')->findall(); 

을 갖는 산업의 배열을 전달할 .html.twig 템플릿

 {{ form_errors(form) }} 
     <form method="post" {{ form_enctype(form) }}> 
     {% for industry in industries %} 
      <h4>{{industry.name}}</h4> 
      <ul class="unstyled"> 
       {% for category in industry.categories %} 
        {% set key = category.id %} 
        <li>{{ form_widget(form.categories[key]) }}{{category.name}}</li> 
       {% endfor %} 
      </ul> 
     {% endfor %} 
     {{form_rest(form)}} 

원하는 결과를 얻을 수 있습니다.

+0

이것은 생명의 은인이었습니다! 공유해 주셔서 대단히 감사합니다. – pid

2

바라건대 이것은 정확한 코드 예제를주지 않고도 충분한 방향입니다. :)

당신은 너무 같은 확장, 여러 개체 필드 설정에 양식을해야합니다

:

참조 : http://symfony.com/doc/current/reference/forms/types/entity.html#group-by

속성 경로에 따라

<?php 

// src/Acme/ProjectBundle/Controller/DefaultController.php 
namespace Acme\ProjectBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Acme\ProjectBundle\Entity\Project; 
use Symfony\Component\HttpFoundation\Request; 

class DefaultController extends Controller 
{ 
    public function newAction(Request $request) 
    { 
     // create a project and give it some dummy data for this example 
     $project = new Project(); 

     $form = $this->createFormBuilder($project) 
      ->add('categories', 'entity', array(
       'expanded' => true, 
       'multiple' => true, 
       'group_by' => 'industry.title' 
      )) 
      ->add('save', 'submit') 
      ->getForm(); 

     return $this->render('AcmeProjectBundle:Default:new.html.twig', array(
      'form' => $form->createView(), 
     )); 
    } 
} 

GROUP_BY 매개 변수 그룹 옵션

이제 group_by은 선택 태그를 렌더링하지만 사용자 정의 나뭇 가지 테마로 또는 템플릿에서 수동으로 재정의 할 수 있어야합니다.

{{ form.categories.vars.choices }}의 선택 항목에 액세스하여 수동으로 반복 할 수 있습니다.

참조 : {% block choice_widget_collapsed %} : form_div_layout.html.twig에서 선택 상자의 렌더링 방법을 확인하십시오.

다음 폼 테마의 좀 더 정보입니다 : http://symfony.com/doc/current/cookbook/form/form_customization.html

+0

참조 : http://stackoverflow.com/questions/13622586/grouping-checkboxes-in-symfony2 –

+0

감사합니다. M. Graham,이 문제를 해결해 드리겠습니다. – user3251285

관련 문제