我需要应用一个购买的模板到我们的仪表板。在这个模板中,登录、寄存器和忘记密码表单都在同一个视图下,并且使用简单的JQuery在它们之间切换。
我一直在寻找一种很好,不太华而不实的方式,把这三种形式结合在一起,但我却空空如也。
我的立场选择(如我所见),以及为什么我不喜欢它们中的任何一个:
/app/Resources/FOSUserBundle/views/,删除{% extend %}部件,并在我自己的登录视图中对它们进行{% include %}。不喜欢的原因:,在我看来,这有点像一个快速-n肮脏的修复-“那部分不工作?让我们打破它!”:)LoginAction和RegisterAction中接受一个额外的参数,在我自己的登录视图中使用带有参数的{% render %}。不喜欢的原因:扩展了整个包,修改了两个不同的控制器,只是为了改变它呈现的方式,感觉就像不好的MVC。TL;DR版本:我正在寻找一种非黑客方式,可以在一页中包含登录、注册和忘记密码表单。
任何帮助都将不胜感激!
发布于 2014-11-23 14:09:20
我找到了一个适合我当前项目的解决方案。预先提出的解决办法的优缺点:
优势:
缺点:
*只需要覆盖layout.html.twig文件
话虽如此,以下是我所做的:
{{ 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 %}{%结束块%} {%结束块%}AcmeBundle::layout-content.html.twig file的
这个布局应该只呈现FOSUserBundle视图脚本的FOSUserBundle块,并且非常简短和简单:
{# src/Acme/DemoBundle/Resources/views/layout-content.html.twig #} {%块内容%}{%结束块%}现在,表单将很好地呈现所有依赖项(CSRF等)。然而,提交表单将带您到FOSUserBundle操作。
备选解决办法:
https://stackoverflow.com/questions/26959973
复制相似问题