首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony2 fos登录、注册和在一个视图中忘记密码

Symfony2 fos登录、注册和在一个视图中忘记密码
EN

Stack Overflow用户
提问于 2014-11-16 17:35:52
回答 1查看 1.2K关注 0票数 4

我需要应用一个购买的模板到我们的仪表板。在这个模板中,登录寄存器忘记密码表单都在同一个视图下,并且使用简单的JQuery在它们之间切换。

我一直在寻找一种很好,不太华而不实的方式,把这三种形式结合在一起,但我却空空如也。

我的立场选择(如我所见),以及为什么我不喜欢它们中的任何一个:

  1. 从fos中获取视图,将它们复制到/app/Resources/FOSUserBundle/views/,删除{% extend %}部件,并在我自己的登录视图中对它们进行{% include %}不喜欢的原因:,在我看来,这有点像一个快速-n肮脏的修复-“那部分不工作?让我们打破它!”:)
  2. 扩展fos,在LoginActionRegisterAction中接受一个额外的参数,在我自己的登录视图中使用带有参数的{% render %}不喜欢的原因:扩展了整个包,修改了两个不同的控制器,只是为了改变它呈现的方式,感觉就像不好的MVC。
  3. XHR装载所有东西。不喜欢的原因:当使用内部页面时,这种方法是有意义的,但是对于重新加载的页面来说,这是没有意义的。

TL;DR版本:我正在寻找一种非黑客方式,可以在一页中包含登录、注册和忘记密码表单。

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-23 14:09:20

我找到了一个适合我当前项目的解决方案。预先提出的解决办法的优缺点:

优势:

  • 很少有LOC可以实现
  • FOSUserBundle更新证明(不覆盖视图脚本*)

缺点:

  • 由于子请求而造成的性能开销
  • 只有表单可以显示,表单提交(以及提交后的错误处理)将始终转到FOSUserBundle提供的页面。
  • 仍然觉得自己是一个快速的解决方案,但比其他选择要好。

*只需要覆盖layout.html.twig文件

话虽如此,以下是我所做的:

  1. 在模板中呈现表单 使用嵌入式控制器呈现所需的表单:
  2. 覆盖FOSUserBundle布局 当我使用包提供的路由时,我不得不使用重写FOSUserBundle布局模板文件来扩展我的应用程序的标准布局。当overriden FOSUserBundle布局文件扩展主应用程序布局文件时,每个调用{{ render ... }}都会重复布局。为了防止这种情况,我们需要动态地解除扩展的布局文件。以下是覆盖的布局文件的外观:{# app/Resources/FOSUserBundle/views/layout.html.twig #} {%如果app.request.get('embeddedForm') %} {% set layout =‘AcmeBundle:布局-content.html.twig’%} {% block %} {% set = 'AcmeBundle::layout.html.twig‘%} {% endif %} {%扩展布局%} {%块内容%} {%块fos_user_content %}{%结束块%} {%结束块%}
  3. 创建AcmeBundle::layout-content.html.twig file这个布局应该只呈现FOSUserBundle视图脚本的FOSUserBundle块,并且非常简短和简单: {# src/Acme/DemoBundle/Resources/views/layout-content.html.twig #} {%块内容%}{%结束块%}

现在,表单将很好地呈现所有依赖项(CSRF等)。然而,提交表单将带您到FOSUserBundle操作。

备选解决办法:

  • 这个答案描述了如何手动实现表单并将它们链接到FOSUserBundle控制器。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26959973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档