我有一个两步表单,要求用户注册。这是一些代码:
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。知道为什么吗?
答案 0 :(得分:1)
字段类型密码具有 always_empty 属性,默认为true。根据文档:
如果设置为true,则该字段将始终呈现为空白,即使该字段为空 相应的字段有一个值。设置为false时,密码字段 将使用value属性设置为其true值来呈现。放 简单地说,如果由于某种原因你想要用你的密码字段来渲染 密码值已经输入到框中,将其设置为false。
所以你会改变:
->add('password', 'password')
到
->add('password', 'password', array('always_empty' => false))