我正在尝试编辑我的用户,当我提交时我没有得到错误,但用户没有在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