0

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

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,但我实际上不是。知道为什么吗?

4

1 回答 1

0

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

如果设置为 true,则该字段将始终呈现空白,即使相应的字段具有值。当设置为 false 时,将呈现密码字段,并将 value 属性设置为其 true 值。简而言之,如果由于某种原因您想使用已输入框中的密码值呈现密码字段,请将其设置为 false。

所以你会改变:

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

->add('password', 'password', array('always_empty' => false))
于 2013-04-02T01:26:09.723 回答