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

时间:2015-06-11 13:41:43

标签: php symfony

您好我正在尝试使用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()));
  }

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

2 个答案:

答案 0 :(得分:1)

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

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

如果您要修改其他用户帐户,请将editAction从此网址更改为:

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

    // the rest of the stuff
    (...)
}

如果有帮助,请告诉我。

答案 1 :(得分:0)

我解决了这个问题..

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()));
  }