Php 从Symfony 2.6升级到2.7:在ChoiceType中,“;选择“作为价值观”;做
我目前正在将Symfony项目从2.6版升级到2.7版。我是用电脑做的。它说: 您应该翻转ChoiceType中“choices”选项的键和值,并将“choices_as_values”选项设置为true。在Symfony 3.0中,该选项的默认值将切换为true 我已经做到了。但是我的表单不再像预期的那样工作了:不再为任何扩展的选项字段设置默认值(即使用Php 从Symfony 2.6升级到2.7:在ChoiceType中,“;选择“作为价值观”;做,php,forms,symfony,Php,Forms,Symfony,我目前正在将Symfony项目从2.6版升级到2.7版。我是用电脑做的。它说: 您应该翻转ChoiceType中“choices”选项的键和值,并将“choices_as_values”选项设置为true。在Symfony 3.0中,该选项的默认值将切换为true 我已经做到了。但是我的表单不再像预期的那样工作了:不再为任何扩展的选项字段设置默认值(即使用expanded=true和multiple=false)。在此之前,字段定义为: $builder->add('handwork',
expanded=true
和multiple=false
)。在此之前,字段定义为:
$builder->add('handwork', 'choice', array(
'multiple' => false,
'expanded' => true,
'choices' => array(
1 => 'Yes',
0 => 'No',
),
)
默认情况下选择了No
选项(或者是因为PHP从'
或null
转换为0
?)
因此,我去了解choices\u as\u values
的作用。但那里没有记录
我做错了什么?为什么这个choices\u as\u values
选项没有文档记录
编辑1:在阅读了更多Github问题后,似乎文档更新还没有准备好,这可以解释为什么我没有在文档中找到我需要的内容。以前,在2.6中,我的表单似乎会自动将空值(如null
或”
转换为0
),这使得它们可以根据需要工作。我还没有弄清楚null
或“
如何在我的字段中结束
编辑2:似乎添加了选项
'choice_value'=>函数($v){return$v;},
有助于恢复默认值。这是因为在SF 2.7中,无线电
输入的值
属性是从头生成的。它们是一个整数,而不是choices
数组中提供的值。我建议将'choices\u保留为\u值=>false
$builder->add('handwork', 'choice', array(
'multiple' => false,
'expanded' => true,
'choices' => array(
1 => 'Yes',
0 => 'No',
),
'choices_as_values' => false
)
将其更改为“true”将引入BC中断,并计划在v3中使用。
添加它是为了处理更复杂的对象,但还不能很好地处理阵列:
在表单生成器中设置默认值,例如默认值“否”:
$builder = $this->createFormBuilder(['handwork' => 0]);
文档更新到期:感谢您的帮助@Alex。在您给出的示例中,值不会翻转,如升级指南中所述。为什么会这样?因为使用
'choices\u作为\u值=>false
choices
是一个值=>标签对的数组。我只是假设你希望页面上出现类似Yes
的内容。非常感谢你,我正在升级一个Sf站点,一些带有字符串作为键和值的选项开始返回整数值,并且默认选中值在其他选项中丢失,'choice\u value'=>函数($v){return$v;}
就是解决方案!!