【发布时间】:2019-02-06 11:10:57
【问题描述】:
我在 symfony 4 中的应用程序需要帮助。
我尝试编辑用户,但不需要更改密码。
这是我的代码:
$form = $this->createForm(UtilisateurType::class, $utilisateur);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$utilisateur->setPassword($passwordEncoder->encodePassword($utilisateur, $utilisateur->getPassword()));
$this->em->merge($utilisateur);
$this->em->flush();
$this->addFlash('success', 'Edition Utilisateur avec succés');
return $this->redirectToRoute('admin.adminadmin.list');
}
return $this->render(
'admin/edit.html.twig',
[
'form' => $form->createView(),
]
);
当我尝试保存用户时,Symfony 将我的密码设为空白。
我的表单类型是:
$builder
->add('nom', TextType::class)
->add('prenom', TextType::class)
->add(
'role',
ChoiceType::class,
[
'choices' => [
'Administrateur' => 'ROLE_ADMIN',
'Commercial' => 'ROLE_COM',
],
]
)
->add('quota_fiche', HiddenType::class)
->add(
'username',
EmailType::class,
[
'label' => 'Email',
]
)
->add(
'password',
RepeatedType::class,
[
'type' => PasswordType::class,
'invalid_message' => 'Les mots de passes ne sont pas identique.',
'options' => ['attr' => ['class' => 'password-field'], 'always_empty' => false],
'required' => true,
'first_options' => ['label' => 'Mot de Passe'],
'second_options' => ['label' => 'Confirmer Mot de Passe'],
]
);
我用这个:
$utilisateur->setPassword($passwordEncoder->encodePassword($utilisateur, $utilisateur->getPassword()));
因为我认为这是在数据库中获取旧密码的一种方法。
【问题讨论】:
-
UtilisateurType 类是什么样的?
-
UtilisateurType 类在我下面的评论中看起来像这样。但我解决了我的问题,为编辑密码和编辑用户创建了一个新表单。