2017-02-07 15 views
2

私は2.7.xの文書をすべて3.2にアップして私の脳を壊してしまったので、なぜ彼らがchoices_as_valuesを削除したのか分からない。それはまさに私が必要とするものです。Symfony(3.2)のChoiceType - キー/値の反転?

現時点では、3つの値(2つは同じ名前/ラベル)を持つ入力があります(理由は問いません)。それは顧客が望むものであり、多くの議論の後、私は単に同意しなければなりませんでした。だから、つまり、私は次のことを持っている:

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

はしかし、symfonyはそれは次のように受信欲しい:

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

あなたが問題を見ることができ、結果の配列にはなるだろう:

Name => 2 
Other Name => 3 

私は1つの価値が欠けています。では、これについて正しい道は何ですか?私は数多くのソリューションを試してきましたが、どれも解決しませんでした送信後の結果の値は、依然として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 ''; 
     } 
    }, 
]); 
関連する問題