您好我正在尝试使用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()));
}
即使我能够提交表单,也不会保存更改。有人可以帮助我并告诉他们该怎么做吗?谢谢你的时间!
答案 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()));
}