【问题标题】:Edit User and password编辑用户和密码
【发布时间】: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 类在我下面的评论中看起来像这样。但我解决了我的问题,为编辑密码和编辑用户创建了一个新表单。

标签: symfony-forms symfony4


【解决方案1】:

你的问题在这里:

$utilisateur->setPassword($passwordEncoder->encodePassword($utilisateur, $utilisateur->getPassword()));

但是,在确定真正的问题之前,我需要查看您的 formType

【讨论】:

  • 感谢 Jess,我通过创建新表单编辑用户和编辑密码解决了我的问题。
猜你喜欢
  • 2017-10-01
  • 1970-01-01
  • 2020-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多