使用 Symfony 框架的选择类型,我们可以决定使用这两个键来显示列表、单选按钮或复选框:
'multiple' => false,
'expanded' => true, //example for radio buttons
假设在 'choices' 键中作为数组给出的不同选择的值不是字符串,而是 bool 值:
$builder->add('myproperty', 'choice', array(
'choices' => array(
'Yes' => true,
'No' => false
),
'label' => 'My Property',
'required' => true,
'empty_value' => false,
'choices_as_values' => true
));
使用列表(选择)来显示不同的选择是没有问题的,当显示表单时,列表中的正确选择被选中。
如果我添加我之前谈到的两个键(多个和扩展)以用单选按钮替换列表,则我的字段没有选定的按钮(尽管它与选择一起使用)。
有人知道为什么吗?
如何轻松使其工作?
谢谢
注意:事实上,我认为它不适用于任何 then 值,因为值是 bool 值并最终成为字符串,但由于它适用于列表,我想知道为什么它不适用于其他人。
最佳答案
我添加了一个数据转换器;
$builder->add('myproperty', 'choice', array(
'choices' => array(
'Yes' => '1',
'No' => '0'
),
'label' => 'My Property',
'required' => true,
'empty_value' => false,
'choices_as_values' => true
));
$builder->get('myProperty')
->addModelTransformer(new CallbackTransformer(
function ($property) {
return (string) $property;
},
function ($property) {
return (bool) $property;
}
));
这很神奇:现在我检查了正确的单选按钮并在实体中设置了正确的值。
关于forms - bool 值和选择 symfony 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39272733/