FOSUserBundle登录,注册,ForgotPassword在同一页面上

时间:2016-06-22 16:12:57

标签: php symfony templates override fosuserbundle

我通过在app \ Resources \ FOSUserBundle \ views中放置layout.html.twig来覆盖FOSUserBundle的默认布局。

我还通过在相应目录中放置新文件来覆盖其他一些模板(如登录,注册和重置密码):

app\Resources\FOSUserBundle\views\layout.html.twig
app\Resources\FOSUserBundle\views\Registration\register.html.twig
app\Resources\FOSUserBundle\views\Resetting\request.html.twig
app\Resources\FOSUserBundle\views\Security\login.html.twig

我想在同一页面上呈现register-form,login-form和reset-password-form。为此,我正在使用树枝渲染控制器方法:

<div class="login" data-lbg="teal">
    {{ render(controller('FOSUserBundle:Security:login')) }} // foo
    {{ render(controller('FOSUserBundle:Registration:register')) }} // bar
    {{ render(controller('FOSUserBundle:Resetting:request')) }} // baz
</div>

但是,这只输出单词“foo”并且不会扩展我的layout.html.twig。所以它只给了我一个带有“foo”的空白页面。

有什么东西坏了还是我做错了什么?

最佳

基督教

1 个答案:

答案 0 :(得分:0)

我创建了一个特定的控制器来渲染这三种形式,这似乎是有效的。在相应的视图脚本中:

{% extends 'FOSUserBundle::layout.html.twig' %}

{% block body %}
    {{ render(controller('FOSUserBundle:Security:login')) }}
    {{ render(controller('FOSUserBundle:Registration:register')) }}
    {{ render(controller('FOSUserBundle:Resetting:request')) }}
{% endblock %}

不幸的是,如果存在验证错误,用户将被重定向到/ login,/ register和/ resetting / request,这些模板不会扩展登录布局。此刻,用户将获得一个带有表单的白页。 :/