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