2016-09-01 3 views
1

:, 우리가 그 두 개의 키와 함께 연주 드 디스플레이리스트, 라디오 버튼이나 체크 박스를 결정할 수 있습니다 심포니의 framwork의 검색 유형을 사용하여 부울 값과 선택의 심포니 유형

'multiple' => false, 
'expanded' => true, //example for radio buttons 

은의 그 대신에 문자열 값의 가정 해 봅시다 '선택'키 배열로 주어진 다른 선택은 논리 값은 다음과 같습니다 문제와이없는 전혀 다른 선택을 표시 목록 (선택)를 사용하여

$builder->add('myproperty', 'choice', array(
    'choices' => array(
     'Yes' => true, 
     'No' => false 
    ), 
    'label' => 'My Property', 
    'required' => true, 
    'empty_value' => false, 
    'choices_as_values' => true 
)); 

형태가 목록에 올바른 선택을 표시 할 때 가 선택됩니다.

라디오 버튼으로 목록을 바꾸기 전에 이야기했던 두 개의 키 (여러 개 및 확장 된 버튼)를 추가하면 내 필드에 선택된 버튼이 없습니다 (선택과 함께 작동 했음에도 불구하고).

누군가가 이유를 알고 있습니까?

쉽게 작동하게 만드는 방법은 무엇입니까?

주 감사 : 사실 나는 그 다음의 모든 작동하지 않을 생각 값이 논리 값이며, 마지막으로 문자열이 될하지만이 목록은 작동하기 때문에, 나는 그것이 작동하지 않는 이유를 궁금해로 다른 사람.

+0

'empty_value'가 라디오 버튼으로 작동하지 않는다고 생각합니다. 대신 '데이터'옵션을 사용하여 값을 강제 설정할 수 있습니다. 'values ​​= 'true', 'data'=> false, 'choices_as_values'=> true)' – VaN

+0

값이 부울이 아닌 경우 empty_value는 라디오 버튼과 함께 작동합니다. 엔티티 용 변압기를 만드는 솔루션이 있다고 생각하지만 프레임 워크를 통해 더 쉬운 방법은 없습니다. – mlwacosmos

답변

4

나는 그것이 누군가를 도울 것이라고 희망하면서 나의 대답을 줄 것이다.


데이터 변환기를 추가합니다.

$builder->add('myproperty', 'choice', array(
    'choices' => [ 
     'Yes' => '1', 
     'No' => '0' 
    ), 
    'label' => 'My Property', 
    'required' => true, 
    'empty_value' => false, 
    'choices_as_values' => true 
)); 

$builder->get('myProperty') 
    ->addModelTransformer(new CallbackTransformer(
     function ($property) { 
      return (string) $property; 
     }, 
     function ($property) { 
      return (bool) $property; 
     } 
)); 

마술입니다. 이제 엔티티에서 올바른 라디오 버튼을 선택하고 올바른 값을 갖게되었습니다.