Symfony 2.8.2
根据Symfony文档"选项选项是一个数组,其中数组键是项目的标签,数组值是项目的值"
http://symfony.com/doc/2.8/reference/forms/types/choice.html#choices
但是通过以下表格,我看到的恰恰相反:
$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();
这样渲染:
文档错了吗?或者我没有做对吗?
答案 0 :(得分:4)
在较新的Symfony版本中,不推荐使用选项choices_as_values
。
https://github.com/symfony/symfony/issues/14951
这是一个解释。我认为在你的情况下,你必须切换它或使用该选项,所以你可以。
将choices_as_values
设为true
。如果你升级你必须改变它。
@Soullivaneuh choices_as_values不是直接来自choice_label。所以你在谈论一个不同的主题。 choices_as_values控制选项是键的位置或选项选项中的值。 Symfony 2.0附带选项作为键(和标签作为值),这意味着简单的语法仅在您的选择是整数或字符串时才有效。任何其他情况(例如布尔选择)都需要传递一个ChoiceList对象,使得使用更加复杂(特别是对于忘记布尔值不能用作键的人,因为PHP只是将它们静默地转换为字符串)。 这就是为什么在2.7中引入了这个选项以便能够翻转阵列(同时保持BC)的原因。优点是任何类型的数据都可以这种方式使用(字符串,整数,浮点数,布尔值,对象,数组)
答案 1 :(得分:1)
从Symfony 4开始,不再支持“ choices_as_values”: https://github.com/symfony/symfony/issues/14951
您必须使用它来实现相同的目的:
'choice_label' => function ($value) {
return $value;
},