首页 文章

Symfony2如何在模板内集成FOSUserBundle寄存器表单

提问于
浏览
1

我尝试将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 回答

  • 0

    您必须覆盖Resources / views / layout.html.twig模板:

    {% extends 'AcmeDemoBundle::layout.html.twig' %}
    
    {% block title %}Acme Demo Application{% endblock %}
    
    {% block content %}
        {% block fos_user_content %}{% endblock %}
    {% endblock %}
    

    Overriding Default FOSUserBundle Templates

    然后如果你使用 {{ render(controller('FOSUserBundle:Registration:register')) }}

    发生错误时,您将使用常用的布局样式进入注册页面 .

    如果你使用 {% render url('fos_user_registration_register') %}

    您可以覆盖注册控制器,然后使用isSubmitted()触发表单提交,并依赖于该加载模板,有或没有 {% extends "ELSiteBundle:Site:index.html.twig" %} 部分 .

相关问题