2016-09-25 52 views
0

我正在尝试编辑我的用户,并且在提交时我没有遇到任何错误,但用户未在数据库中更新。CRUD,手动编辑用户FOSUserBundle Symfony

我想知道,如果管理员在用户(其他字段,而不是密码)进行了一些更改,它会坚持用户使用旧密码,如果管理员更改密码,它会坚持最新的密码:d

对不起我的英语水平,并感谢你们:)

这是我在\ UserController.php EditAction

public function editAction(Request $request, User $user) 
{     
    $password = $user->getPassword(); 

    $deleteForm = $this->createDeleteForm($user); 
    $editForm = $this->createForm('UserBundle\Form\EditUserType', $user); 
    $editForm->handleRequest($request); 


    if ($editForm->isSubmitted() && $editForm->isValid()) { 

     if(!empty($form->get('password')->getData())){ 
      $user->setPlainPassword($form->get('password')->getData()); 
      } 
     else{ 
     $user->setPassword($password); 
      }    
     $em = $this->getDoctrine()->getManager(); 
     $em->persist($user); 
     $em->flush(); 

     return $this->redirectToRoute('user_edit', array('id' => $user->getId())); 
    } 

    return $this->render('UserBundle:user:edit.html.twig', array(
     'user' => $user, 
     'edit_form' => $editForm->createView(), 
     'delete_form' => $deleteForm->createView(), 
    )); 
} 

,这是我的形式\ EditUserType.php

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('nom') 
     ->add('prenom')  
     ->add('username') 
     ->add('email') 
     ->add('password', 'repeated', 
     array(
      'type' => 'password', 
      'invalid_message' => 'Les mots de passes doivent être identique', 
      'required' => false, 
      'first_options' => array('label' => 'Nouveau mot de passe'), 
      'second_options' => array('label' => 'Confirmation du mot de passe') 
     ) 
     )     
     ->add('enabled') 
     ->add('last_login') 
    ; 
} 

回答

0

您必须使用FosUserBundle Manager服务,根据此:Fos User Manager Service

+0

你有时间测试吗? –

+0

你能告诉我们怎么回事? –