2017-08-29 7 views
0

Twigテンプレートで実装するフォームを作成しようとしています。そのために、いくつかのHTML要素を使用しています。その1つは、SymfonyコンポーネントのThe ChoiceTypeです。私はaddメソッドに渡す配列を作成しました。 私の願いは、value属性およびラベルの配列の各値に、私はSymfonyのChoiceType要素に配列のキーを配置するには

protected $lsa_types = array(
    'B' => 'Boolean', 
    'D' => 'Date', 
    'F' => 'Float', 
    'I' => 'Integer', 
    'L' => 'List', 
    'S' => 'String', 
    'T' => 'Text', 
); 

$form->add('type', ChoiceType::class, array('choices' => $this->lsa_types, 
      'choice_label' => function ($value) { 
       return $value; 
      }, 
      'choice_value' => function ($key) { 
       return $key; 
      }, 
      'required' => true)); 
+1

ここでは問題はありません。 $キーを使用している場合、$ array = [ ["key" => "B"、 "value" => " 「キー」=>「D」、「値」=>「日付」] ... ... ]; そして、あなたのようにクロージャに渡すことができます... "choice_label" => function($ data){return $ data ['value']; }などだ – Gunnrryy

+0

あなたの配列を反転し、ChoiceTypeのオプションとして '' choices_as_values "=> true'を使うようにしてください。 –

+0

' choices_as_values'はsymfonyの第3​​版以降、非難されています – KubiRoazhon

答えて

1

@Massimilianoはコメントしていますが、choices_as_valuesを残し、choice_label & choice_valueを行うには失敗した事を、キーを表示することですオプション:

protected $lsa_types = array(
    'B' => 'Boolean', 
    'D' => 'Date', 
    'F' => 'Float', 
    'I' => 'Integer', 
    'L' => 'List', 
    'S' => 'String', 
    'T' => 'Text', 
); 

... 

$choices = array_flip($this->lsa_types); 

$form 
    ->add(
     'type', 
     ChoiceType::class, 
     array(
      'choices' => $choices, 
      'required' => true 
     ) 
    ) 
; 
関連する問題