2017-02-07 12 views
2

나는 2.7.x 문서에서 3.2까지 올라간다. 나는 왜 그들이 choices_as_values을 제거했는지 알지 못한다. 그것은 내가 필요한 것입니다.Symfony (3.2)의 ChoiceType - 키/값 뒤집기?

현재 입력란에 3 개의 값 (두 개는 같은 이름/라벨 있음)이있는 이유는 묻지 않습니다. 그것은 고객이 원했던 것이며 많은 논의 끝에 간단히 동의해야했습니다. 그래서, 즉, 나는 다음있어 : 그러나

1 => Name 
2 => Name 
3 => Other Name 

, 심포니는 이렇게받은 원 : 당신은 문제를 볼 수 있습니다

Name => 1 
Name => 2 
Other Name => 3 

, 결과 배열이 될 것입니다 :

Name => 2 
Other Name => 3 

값이 하나만 부족합니다. 그래서, 이것에 대해 올바른 방법은 무엇입니까? 저는 수많은 솔루션을 시도했지만 그 중 아무 것도 작동하지 않았습니다. 제출 후 결과 값은 여전히 ​​1, 2 또는 3이어야합니다.

답변

2

반전 이유는 PHP가 정수와 문자열을 배열 키로 허용하는 반면 실제 선택 값은 임의의 PHP 유형 일 수 있다는 것입니다. 그러나 일반적으로 중복 키는 사용자를 혼동하여 choices 옵션 값의 키로 사용하기 쉽기 때문에 레이블은 고유합니다. 당신이 중복 될 레이블을해야하는 경우

어쨌든, 당신은 레이블을 반환합니다 choice_label에 콜백 표시 할을 전달할 수 있습니다

$builder->add(ChoiceType::class, null, [ 
    'choices' => [ 
     1, 
     2, 
     3, 
    ], 
    'choice_label' => function ($value) { 
     switch ($value) { 
      case 1: 
       return 'Name'; 
      case 2: 
       return 'Name'; 
      case 3: 
       return 'Other Name'; 
      default: 
       return ''; 
     } 
    }, 
]);