Symfony 修改用户名时为我的模板提供了错误的用户名
我正在制作一个表单,允许用户更改用户名。但是,我希望用户输入其当前密码以更改用户名 修改工作正常,当当前密码错误时,会给出一个错误。但是,给模板的用户用户名是错误的,因此我在标题栏中说“loggeasxxx”的文字是错误的 我的意思是,如果用户输入“YYY”作为用户名,而当前用户名是“XXX”,则标题栏中的消息将是“loggeasyyy”,而不是“loggeasxxx” 我正在使用app.user.username在我的小枝模板中显示名称 这是我的控制器代码:Symfony 修改用户名时为我的模板提供了错误的用户名,symfony,Symfony,我正在制作一个表单,允许用户更改用户名。但是,我希望用户输入其当前密码以更改用户名 修改工作正常,当当前密码错误时,会给出一个错误。但是,给模板的用户用户名是错误的,因此我在标题栏中说“loggeasxxx”的文字是错误的 我的意思是,如果用户输入“YYY”作为用户名,而当前用户名是“XXX”,则标题栏中的消息将是“loggeasyyy”,而不是“loggeasxxx” 我正在使用app.user.username在我的小枝模板中显示名称 这是我的控制器代码: public function p
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(),
));
}
基本上,在我的表单中,用户可以更改其用户名和/或密码。每次,他都需要提供当前密码
问题是,当表单无效时,提供给模板的用户名是表单中编辑的用户名,而不是原始用户名。有两种方法可以解决此问题:
User
类中创建一个单独的字段来保存新用户名,并在验证后和持久化之前将其复制到实际用户名,这与您当前使用密码的方式相同
形式模型
基本上,a是一个嵌入实际模型和那些额外字段(如
newUsername
或plainPassword
)的对象。如果你不想用这些额外的字段把实际的模型类弄得乱七八糟的话,你可以这样做。非常感谢!即使我认为第二个更干净,我还是选择了第一个解决方案。但对我来说,这更容易,也不是很重要。