Symfony 使用引导的自定义FOSUserBundle登录模板

Symfony 使用引导的自定义FOSUserBundle登录模板,symfony,twitter-bootstrap,twig,fosuserbundle,Symfony,Twitter Bootstrap,Twig,Fosuserbundle,我已经安装了Symfony2、FOS用户包和Twitter引导 然后我设置/app/Resources/FOSUserBundle/views/layout.html.twig模板以覆盖FOSUserBundle以使用我的网站模板 如果我在主页上有一个链接/登录,这一切都会起作用 现在,我想实现一个类似的模板,其中登录表单是主模板的一部分 我最接近的方法是在主模板中使用: {% render controller("FOSUserBundle:Security:login") %} 我可以覆盖

我已经安装了Symfony2、FOS用户包和Twitter引导

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

如果我在主页上有一个链接/登录,这一切都会起作用

现在,我想实现一个类似的模板,其中登录表单是主模板的一部分

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

{% render controller("FOSUserBundle:Security:login") %}
我可以覆盖布局html以不扩展主模板,但这会删除/login中的所有样式

你知道我如何处理这两种情况吗?

你就快到了:)

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

{% render controller("FOSUserBundle:Security:login") %}
。。。您只需创建app/Resources/FOSUserBundle/views/Security/login.html.twig并使用FOSUserBundle中的包装
{%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>
{%if错误%}
{{error | trans}}
{%endif%}
{{'security.login.username'|trans}}
{{'security.login.password'|trans}}
{{'security.login.memory|me'|trans}

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

理查德·米勒的帖子帮助我实现了我想要做的事情


我无法让app.request.partial正常工作,并决定基于xmlRequest的选择并不理想。

FOSUserBundle的文档包含一章覆盖默认FOSUserBundle模板:这非常适合将其放在顶部,但当用户输入错误密码时,登录表单将显示为不正确styling@nifr打扰一下但是我不喜欢这种方法。这是一个来自core的解决方案,但是为什么更喜欢手写的
模板
而不是原子表单类型
?@cept0-老实说,我不知道为什么FOSUserBundle的注册表单是表单类型,而登录表单是硬编码到模板中的。你是对的,这不是通常的symfony方式。。。我猜它是这样设计的,因为硬编码表单允许更容易地包含到其他模板中。。。您不需要将包含表单的变量传递给每个视图来呈现它。。。但这只是一个建议:)只有一件事/对于翻译别忘了告诉应用程序在FOSUserBundle中搜索它们-例如:
{{security.login.username'| trans({},'FOSUserBundle')}
{% extends app.request.attributes.get('partial')
     ? '::ajax-layout.html.twig'
     : '::full-layout.html.twig' %}