2015-02-01 3 views
1

내 응용 프로그램에서 사용자가 특정 선택을 나타낼 수있는 체크 박스 그룹을 표시해야합니다. 내 경우에는 "영역", 즉 영역 A, 영역 B, 영역 C 등을 참조합니다.Symfony 2/Twig 및 체크 박스 모음

프레임 워크에서 제공하는 FormBuilderInterface을 사용하여 양식 유형 클래스에서이를 구성하는 방법에 문제가 있습니다. .

설명서에 "collection"유형 [1]이 필요하지만 필자는 확인란 요소 [2]에 연결하는 데 문제가 있습니다. 설명서는 하나의 확인란에 대한 예제 만 제공하는 것처럼 보이지만 그룹에 필요합니다.

class FormType extends AbstractType { 

    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
    $builder 
     ->add('zones', 'collection', 
     array(
      'type' => 'checkbox', 
      'options' => array(
      'zone-a' => 'Zone A', 
      'zone-b' => 'Zone B', 
      'zone-c' => 'Zone C', 
     ) 
     ) 
    ) 
    ; 
    } 

} 

그리고 데이터 클래스 (폼 모델 만약에 당신) :

class FormData { 

    protected $zones = []; 

    public function __construct(array $zones = NULL) 
    { 
    if(! empty($zones)) 
    { 
     $this->setZones($zones); 
    } 
    } 

    public function getZones() 
    { 
    return $this->zones; 
    } 

    public function setZones($zones) 
    { 
    $this->zones = $zones; 
    } 

} 

내가 (나는 간결에 대한 다른 필드를 남겨 두었다) 지금까지 무엇을 가지고 이것은 폼 요소를 렌더링하는 방법입니다 (지금은) :

{{ form_row(form.zones) }} 

그러나 위의 예제에서는 Zones 및 nothi라는 레이블 만 출력합니다 다른 사람.

Symfony 2/Twig 어플리케이션에서 그룹/콜렉션 체크 박스를 올바르게 렌더링하려면 어떻게해야합니까?

[1] http://symfony.com/doc/current/reference/forms/types/collection.html [2] http://symfony.com/doc/current/reference/forms/types/checkbox.html

답변

1

두 번째 FormType 필요할 것이다.

$builder 
    ->add('zones', 'collection', 
    array(
     'type' => new FormDataType(), 
     'options' => array(
     ..... 
    ) 
    ) 
) 

그리고 두 번째 양식은 다음과 같이한다 : 당신의 모양은 요구하고있다

첫 번째 형태

class FormDataType extends AbstractType { 
... 
    $builder 
     ->add('checkBox1', 'checkbox', ...) 
     ->add('checkBox2', 'checkbox', ...) 
     .... 
} 

난 그냥 쓴, 그래서 내가 할 수있는 그게 효과가 있는지 말하지 말아라... 그러나 이것이 당신이 가야 할 접근법이다. 나는 이미 내 프로젝트 중 하나에서 그런 것을했다.