首页 文章

Symfony ChoiceType $ choices - 交换标签和值

提问于
浏览
2

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();

渲染如下:

Label is value and the value is label

文档错了吗?或者我没有做对吗?

1 回答

  • 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)的原因 . 优点是可以以这种方式使用任何类型的数据(字符串,整数,浮点数,布尔值,对象,数组)

相关问题