我刚刚开始研究现有的Symfony 2.7项目,该项目现在应该准备好更新到Symfony 2.8 .

现在我遇到了 ChoiceType 的以下information from the docs

在所有情况下,choices_as_values必须设置为true . 这激活了Symfony 2.7中引入的“新”选择类型API . 如果省略此选项(或将其设置为false),您将激活旧的API,该API已弃用,将在3.0中删除 . 要阅读有关旧API的信息,请阅读较旧版本的文档 .

检查项目中的 'choice' 表单字段时,我注意到,它们都没有使用 'choices_as_values' => true . 我认为,当项目从Symfony 2.6更新到2.7之前,这个问题很简单 .

因此,似乎所有 'choice' 表单字段仍然使用"old" API . 为了更新并为Symfony 3做好准备,我想改变它 .

What exactly do I have to do?

当比较Symfony 2.62.7ChoiceType 文档时,可以看到:

  • ... choice_list 在2.7中已弃用

  • ... 2.7有几个新选项,如 choice_loaderchoice_name

由于 choice_list 未在项目中使用,因此此更改不应产生任何影响, should it?

新选项很不错,但是如果尚未使用,那么在更新后也应该没有问题, right?

我唯一关心的是,现有的选择可能会改变他们的行为 .

我认识到'options'选项的键和值的顺序已被切换:

// 2.6
'choices'  => array(
    'm' => 'Male',
    'f' => 'Female',
),

// 2.7
'choices'  => array(
    'Male' => m,
    'Female' => f,
),

Is this right? 这将是一个很大的变化 . 但是,添加 'choices_as_values' => true 选项(==激活"new" API)和 not 更改 choices 选项时, I do not see any difference in the generated HTML code.

我比较了2.6和2.7文档,但没有发现其他变化,但这并不意味着没有其他变化:-)

So, are there other changes I have to consider?