symfony2表单无法正确呈现密码

时间:2013-04-02 00:53:09

标签: php symfony

我有一个两步表单,要求用户注册。这是一些代码:

public function earlySignupAction(Request $request)
    {
        $user = new User();

        $form = $this->createFormBuilder($user)
            ->add('username', 'text')
            ->add('email', 'email')
            ->add('password', 'password')
            ->getForm();

        $form->bind($request);

        if ($form->isValid()) {
            $em = $this->getDoctrine()->getEntityManager();
            $userRepository = $em->getRepository('MySiteUserBundle:User');
            $userFoundByUsername = $userRepository->findOneBy(array('username' => $user->getUsername()));

            if ($userFoundByUsername) {
                $this->get('session')->getFlashBag()->add('notice', "Already registered!\n We will notify you soon!");
            } 

            $additionalInfoForm = $this->createForm(new UserType(), $user, array(
                'mode' => 'additional_signup_info'
            ));

            return $this->render('MySiteMainBundle:Signup:index.html.twig',  array(
                'additionalInfoForm' => $additionalInfoForm->createView()));
        }else{
            foreach($form->getErrors() as $key => $error){
                $this->get('session')->getFlashBag()->add('error', $error->getMessage());
            }    
        }

        return $this->redirect($this->generateUrl('MySiteMainBundle_signup_fail'));
    }

现在我想要/应该发生什么是在第二个表单($additionaInfoForm)上,密码字段将从$form上输入的密码预先填充,但事实上它不是“T。知道为什么吗?

1 个答案:

答案 0 :(得分:1)

字段类型密码具有 always_empty 属性,默认为true。根据文档:

  

如果设置为true,则该字段将始终呈现为空白,即使该字段为空   相应的字段有一个值。设置为false时,密码字段   将使用value属性设置为其true值来呈现。放   简单地说,如果由于某种原因你想要用你的密码字段来渲染   密码值已经输入到框中,将其设置为false。

所以你会改变:

->add('password', 'password')

->add('password', 'password', array('always_empty' => false))