CRUD,手动编辑用户FOSUserBundle Symfony


CRUD,edit manually a user FOSUserBundle Symfony

我正在尝试编辑我的用户,当我提交时我没有得到错误,但用户没有在DB中更新。

我想知道,如果管理员对用户(其他字段,而不是密码)进行了一些更改,它将保留旧密码的用户,如果管理员更改密码,它将保留最新的密码:D

很抱歉我的英语不好,谢谢大家:)

这是我的EditAction在'UserController.php

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

你必须使用FosUserBundle Manager服务,根据这个:FosUser Manager service