Symfony 2单选按钮布尔问题?

时间:2016-01-17 17:25:40

标签: php symfony symfony-forms

好的,我正在运行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。如果有人要我发布所有控制器功能或用户表格,请告诉我。

感谢。

1 个答案:

答案 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;
    }
));