2017-08-29 47 views
0

我试图构建一个表单,我将在树枝模板中实现。为此,我使用了一些HTML元素。其中之一是Symfony组件的ChoiceType。我创建了一个数组,我传递给add方法。 我的愿望是显示值属性的钥匙,并在标签阵列的每个值,我已经失败的事如何将数组的键放在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

这里的问题是你没有$ value | $ key,你试图传递给闭包,你可能需要重新处理你的数组,看起来像$ array = [ [“key”=>“B”,“value”=>“布尔“], [”key“=>”D“,”value“=>”Date“],... ];然后你可以传递给闭包,例如...“choice_label”=> function($ data){return $ data ['value']; }等 – Gunnrryy

+0

尝试翻转你的数组,并使用''choices_as_values“=> true'作为ChoiceType的选项 –

+0

'choices_as_values'已被弃用,因为symfony的第三个版本 – KubiRoazhon

回答

1

做的@Massimiliano评论,但离开了choices_as_valueschoice_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 
     ) 
    ) 
; 
相关问题