我尝试将FOSUserBundle注册表单集成到我的主页(index.html.twig模板 . 在我的index.html.twig中,我使用render函数在我的登录块中显示表单如下:
{% block container %}
[...]
{% block login %}
{% render url('fos_user_registration_register') %}
{% endblock login %}
[...]
{% endblock container %}
此时一切正常 . 但是当我提交表单时出现错误,FOSUserBundle控制器重定向到我的覆盖寄存器模板,并且只渲染表单,而不是所有带有表单的页面 . 我试图扩展覆盖的寄存器表单以写入登录块
{% extends "ELSiteBundle:Site:index.html.twig" %}
{% block login %}
<div>
<form ...>
[my html form]
</form>
</div>
{% endblock login %}
它在FOSUserBundle重定向到寄存器模板时有效,但是现在,当调用主页时,我在登录块中获得了重复的html内容(它将整个页面重写为登录块) .
所以我的问题是:我如何将register.html.twig模板呈现到我的登录块中,对于这两种形式(默认和错误)?
1 回答
您必须覆盖Resources / views / layout.html.twig模板:
Overriding Default FOSUserBundle Templates
然后如果你使用
{{ render(controller('FOSUserBundle:Registration:register')) }}
发生错误时,您将使用常用的布局样式进入注册页面 .
如果你使用
{% render url('fos_user_registration_register') %}
您可以覆盖注册控制器,然后使用isSubmitted()触发表单提交,并依赖于该加载模板,有或没有
{% extends "ELSiteBundle:Site:index.html.twig" %}
部分 .