首页 文章

使用Bootstrap自定义FOSUserBundle登录模板

提问于
浏览
4

我已经安装了Symfony2,FOS用户包和Twitter Bootstrap .

然后我设置/app/Resources/FOSUserBundle/views/layout.html.twig模板以覆盖FOSUserBundle以使用我的网站模板 .

如果我在主页上有/ login的链接,这一切都有效 .

现在我想实现一个像hero template这样的模板,其中登录表单是主模板的一部分 .

我最接近的是在主模板中使用它:

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

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

我有什么想法可以处理这两种情况吗?

2 回答

  • 0

    你快到了:)

    您可以使用渲染功能在任何其他模板中包含登录表单 .

    {% 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>
    

    然后调整它以适合您的模板 .

  • 12

    理查德米勒的帖子帮助我实现了我的目标 .

    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的选择并不理想 .

相关问题