使用Bootstrap自定义FOSUserBundle登录模板



我已经安装了Symfony2, FOS User Bundle和Twitter Bootstrap。

然后设置/app/Resources/FOSUserBundle/views/layout.html。

使用我的站点模板来覆盖FOSUserBundle

如果我在主页上有一个链接到/login,这一切都可以工作。

现在我想实现一个像英雄模板那样的模板,其中登录表单是主模板的一部分。

我所得到的最接近的是在主模板中使用:

{% render controller("FOSUserBundle:Security:login") %}

我可以覆盖布局html不扩展主模板,但这将删除所有的样式从/login

我该如何处理这两种情况?

你就快到了

您可以使用render函数将登录表单包含在任何其他模板中。

{% render controller("FOSUserBundle:Security:login") %}

…你只需要创建app/Resources/FOSUserBundle/views/Security/login.html。twig并提交FOSUserBundle的login.html.twig中的包装{% block fos_user_content %},以便让它直接返回表单:

{% if error %}
    <div>{{ error|trans }}</div>
{% endif %}
<form action="{{ path("fos_user_security_check") }}" method="post">
    <input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />
    <label for="username">{{ 'security.login.username'|trans }}</label>
    <input type="text" id="username" name="_username" value="{{ last_username }}" required="required" />
    <label for="password">{{ 'security.login.password'|trans }}</label>
    <input type="password" id="password" name="_password" required="required" />
    <input type="checkbox" id="remember_me" name="_remember_me" value="on" />
    <label for="remember_me">{{ 'security.login.remember_me'|trans }}</label>
    <input type="submit" id="_submit" name="_submit" value="{{ 'security.login.submit'|trans }}" />
</form>

Richard Miller的帖子帮助我实现了我想要做的事情。

http://richardmiller.co.uk/2013/02/18/symfony2-ajax-and-full-page-templates/

{% extends app.request.attributes.get('partial')
     ? '::ajax-layout.html.twig'
     : '::full-layout.html.twig' %}

我不能让app.request.partial工作,并决定选择基于xmlRequest是不理想的

最新更新