我正在开发一种使用户能够更改其用户名的表单。但是,我希望用户输入他当前的密码以更改用户名。
修改效果很好,当当前密码错误时,它会出错。但是,给模板的用户的用户名是错误的,所以我在标题栏中说“记录为 XXX”的文字是错误的。
我的意思是如果用户输入“YYY”作为用户名,并且当前用户名是“XXX”,那么标题栏中的消息将是“Logged as YYY”而不是“Logged as XXX”。
我正在使用 app.user.username 在我的 TWIG 模板中显示名称。
这是我的控制器代码:
public function profileAction()
{
$request = $this->getRequest();
$user = $this->get('security.context')->getToken()->getUser();
$form = $this->createForm(new UserType(), $user);
$form->handleRequest($request);
if ($form->isValid())
{
if($user->getPlainPassword() != "")
{
$encoder = $this->get('security.encoder_factory')->getEncoder($user);
$password = $encoder->encodePassword($user->getPlainPassword(), $user->getSalt());
$user->setPassword($password);
$user->setPlainPassword("");
}
$user->setPlainPassword("");
$em = $this->getDoctrine()->getManager();
$em->persist($user);
$em->flush();
return $this->redirect($this->generateUrl('user_profile'));
}
return $this->render('CafauSecurityBundle:Security:profile.html.twig', array(
'form' => $form->createView(),
));
}
基本上,在我的表单中,用户可以更改他的用户名和/或密码。每次,他都需要提供当前密码。
问题是当表单无效时,给模板的用户名是表单中编辑的用户名,而不是原始用户名。