Symfony FOS编辑/更新用户名/电子邮件


Symfony FOS editing/updating username/email

你好,我正在尝试用symfony FOSUserBundle制作用户更新/编辑系统,我没有什么问题

目前,我能够使用以下代码加载现有的用户名和电子邮件:

  public function editAction(Request $request, $id)
  {
    $userManager = $this->get('fos_user.user_manager');
    $user = $userManager->findUserBy(array('id' => $id));
    $form = $this-> createFormBuilder($user)
      ->add('username')
      ->add('email')
      ->add('save', 'submit')
      ->getForm();
        $form->setData($user);
        $userManager->updateUser($user);
    return $this->render('PRACTestBundle:Default:edit.html.twig', array('form' => $form->creaveView()));
  }

即使我能够提交表单,它也不会保存更改。有人可以帮助我并告诉我该怎么做吗?谢谢你的时间!

您似乎正在将更新操作与编辑页面混合在一起。我很困惑,为什么您在加载数据后尝试更新用户?

以下是应如何使用当前登录的用户使用"显示"和"编辑"操作创建控制器的方法:https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Controller/ProfileController.php

如果要编辑其他用户帐户,请将此 URL 中的编辑操作更改为:

public function editAction(Request $request, $id)
{
    $userManager = $this->get('fos_user.user_manager');
    $user = $userManager->findUserBy(array('id' => $id));
    // the rest of the stuff
    (...)
}

让我知道这是否有帮助。

我解决了这个问题。

public function editAction(Request $request, $id)
  {
    $userManager = $this->get('fos_user.user_manager');
    $form = $this-> createFormBuilder($user)
      ->add('username')
      ->add('email')
      ->add('save', 'submit')
      ->getForm();
    $form->handleRequest($request);
    if ($form->isValid())
    {
        $userManager->updateUser($user);
    }
        return $this->render('PRACTestBundle:Default:edit.html.twig', array('form' => $form->creaveView()));
  }
相关文章: