2013-04-02 3 views
0

У меня есть двухэтапная форма, которая запрашивает регистрацию пользователя. Вот код:symfony2 форма не возвращает пароль правильно

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')); 
    } 

Теперь то, что я хочу/то, что должно произойти в том, что на 2-й формы ($additionaInfoForm) поле пароля будет предварительно заполненные от пароля, который был введен в $form, но я ведь это WASN «т. Любая идея почему?

ответ

1

Пароль типа поля имеет атрибут, always_empty который по умолчанию имеет значение true. В документах:

Если установлено значение true, поле всегда будет отображаться пустым, даже если соответствующее поле имеет значение. Если установлено значение false, поле пароля будет отображаться с атрибутом value, установленным в его истинное значение. Поместите просто, если по какой-то причине вы хотите отобразить поле своего пароля с значением пароля, уже введенным в поле, установите для этого значение значение false.

Таким образом, вы бы изменить:

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

в

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

Я попытался это, но он не работает, а – adit

+2

Опция always_empty не работает для меня тоже. – Rooster242

+0

То же самое для меня, кто-нибудь знает почему? – soipo

Смежные вопросы