2017-06-19 21 views
2

的Symfony 2.8.2

按照Symfony的文档“中选择选项是一个数组,数组键是项目的标签和数组值项的数值”

​​

但具有下列形式我看到了完全相反:

 $filterForm = $this->createFormBuilder() 
     ->add('vendorName', ChoiceType::class, array(
      'expanded' => true, 
      'multiple' => true, 
      'choices' => array('label' => 'value') // <-- HERE 
     )) 
     ->add('filter', SubmitType::class, array('label' => 'Filter')) 
     ->getForm(); 

呈现这样的:

Label is value and the value is label

是文档错了吗?或者我没有得到它的权利?

回答

4

在较新的Symfony版本中,选项choices_as_values已被弃用。

https://github.com/symfony/symfony/issues/14951

这里是一个解释。我认为在你的情况下,你必须切换或使用选项,只要你可以。

设置choices_as_valuestrue。如果你升级你必须改变这一点。

@Soullivaneuh choices_as_values不是直接给choice_label。所以你正在谈论一个不同的话题。 choices_as_values控制选项是选项中的键还是值。 Symfony 2.0提供了选项作为键(以及标签作为值),这意味着简单的语法只有在您的选择是整数或字符串时才起作用。任何其他情况(例如布尔选择)都需要传递一个ChoiceList对象,这使得用法更加复杂(特别是对于忘记布尔值不能用作关键字的人来说,PHP只是简单地将它们强制转换为字符串)。 这就是为什么这个选项已经在2.7中引入了能够翻转阵列(同时保持BC)的原因。优点是可以以这种方式使用任何类型的数据(字符串,整数,浮点数,布尔值,对象,数组)

+0

感谢您指出。所以我想我的选项要么将choices_as_values设置为true,要么升级到3.x.请您反映,在您的回答 –

+0

@StasParshin更正中,请将choices_as_values设置为true,以便将键作为标签。从v3开始,作为标签的键是默认值。 – jah