好的,我正在运行symfony 2.7.8。我有一个User Abstract表单,我添加了一个似乎有效的“活动”状态选项,因为如果我愿意,我可以将用户设置为活动/非活动状态。
但是,当用户设置为非活动(0)时,它不会检查该无线电选项。如果用户处于活动状态,它将默认检查(1)。我只是做错了什么或什么?
有效'添加'部分
$ActiveState = [0 => 'Non-Active', 1 => 'Active'];
->add('active', 'choice', [
'label' => 'Active State',
'multiple' => false,
'choices' => $ActiveState,
'expanded' => true,
'label_attr' => ['class' =>'Active']
])
这就是我构建加载用户的表单的方式
$User = $this->getDoctrine()
->getRepository('XXXXBundle:Users')
->find($id); <- If i passed in url e.g. /user/ID-HERE
$EditUser = $this->createForm(new UserType(),$User,[
'action' => $this->generateUrl('UserUpdate',['id' => $id]),
'method' => 'PUT'
]);
当我选择任一单选按钮时,它会更新该用户,但只预先检查了活动用户?
那么我做错了什么?
欢迎大家帮忙,ps。如果有人要我发布所有控制器功能或用户表格,请告诉我。
感谢。
答案 0 :(得分:2)
我对布尔属性有同样的问题(假 - 0不工作,真正的1工作)。我为此表单元素添加了视图转换器,以使其正常工作
在->add(...)
$builder->get('active')->addViewTransformer(new \Symfony\Component\Form\CallbackTransformer(
function ($original) {
return $original ? 1 : 0;
},
function ($submitted) {
return $submitted ? true : false;
}
));