我已经在我的项目中成功安装了 FOSUserBundle,一切都按预期工作。但是,我正在努力解决如何在我的实际项目中实现它。
我想创建以下设置:
以一种形式显示一些用户设置的页面(如新闻订阅),以第二种形式更改密码的可能性,也可能以第三种形式更改用户名。
设置表单以及更多信息来自我的控制器中的现有操作,并且运行良好。
我确实尝试了一些事情,但事情还没有真正解决:
我将一些功能复制
FOSUserBundle\Controller\ChangePasswordController\changePasswordAction()
到我自己的操作中。这样我就可以获得更改密码表单,创建视图并将其传递给我的模板。我将表单添加到我的模板中
{{ form_widget(form) }}
。表单正在显示,它甚至可以正常工作。我可以更改密码。但是,标签正在丢失,只是读取Current
、First
和Second
。此外,当两个新密码不匹配或留空时,也不会显示错误消息。
总而言之,我觉得我可能以错误的方式做这件事。您能否帮助我如何处理这项任务并指出我可能在哪里做一些愚蠢的事情?
这是我的操作代码,简化为这里的重要内容:
# src/Acme/MyBundle/Controller/BackendController.php
public function accountAction(){
//pretty much a copy of FOSUserBundle\Controller\ChangePasswordController\changePasswordAction()
$user = $this->get('security.context')->getToken()->getUser();
$form = $this->container->get('fos_user.change_password.form');
$formHandler = $this->container->get('fos_user.change_password.form.handler');
$process = $formHandler->process($user);
if ($process) {
//password has been changed, response will be generated
}
//more stuff going on here
$moreStuff = ...
//render view
return $this->render('AcmeMyBundle:Backend:account.html.twig', array(
'form' => $form->createView(),
'moreStuff' => $moreStuff
));
}