FOS用户包。在我的模板中包含登录表单

FOSUserBundle. Include login form in my template

您好,我正在尝试将 FOSUser 捆绑包的登录表单包含在我的自定义模板中。像这样:

 {% include 'FOSUserBundle:Security:login.html.twig' %}

但是我有这个错误: Variable "error" does not exist in FOSUserBundle:Security:login.html.twig at line 7

有没有办法在我的控制器中不添加任何东西的情况下包含模板?

此模板应呈现为整页。要包含它,渲染 the controller action.

可能更方便
{{ render(controller('FOSUserBundle:Security:login')) }}

要覆盖 FosUserBundle 的模板,您必须这样做:

  1. app/Resources
  2. 中创建文件夹 FOSUserBundle/view
  3. 将 FOSUserBundle 的视图文件夹复制到您刚刚创建的文件夹中

并且您可以包含您的模板和自定义 FOSUser 视图。

示例:

layout.html.twig app/Resources/FOSUserBundle/view 中的 FOSUser:

{% extends ":layout:Public/layout.html.twig" %} #My layout
{% block body %}
        <div>
            {% block fos_user_content %}

            {% endblock fos_user_content %}
        </div>

{% endblock %}

app/Resources/FOSUserBundle/view/Security/login.html.twg

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

{% trans_default_domain 'FOSUserBundle' %}

{% block fos_user_content %}
<div class="col-md-4">
    <form action="{{ path("fos_user_security_check") }}" method="post">
        <h2 class="form-signin-heading">Se connecter </h2>
        <hr>
        <input type="hidden" name="_csrf_token" value="{{ csrf_token }}" />
        <label class="sr-only" for="username">{{ 'security.login.username'|trans }}</label>
        <input class="form-control"  type="text" id="username" name="_username" value="{{ last_username }}" required="required" />
        <label class="sr-only" for="password">{{ 'security.login.password'|trans }}</label>
        <input class="form-control" type="password" id="password" name="_password" required="required" placeholder="Mot de passe" />
        <div class="checkbox">
            <label>
                <input type="checkbox" id="remember_me" name="_remember_me" value="on" />
                <label for="remember_me">{{ 'security.login.remember_me'|trans }}</label>
            </label>
        </div>
        <input class="btn btn-primary" type="submit" id="_submit" name="_submit" value="{{ 'security.login.submit'|trans }}" />
    </form>
    <br>
    <a href="{{ path('fos_user_resetting_request') }}" class="btn btn-danger">Mot de passe perdu ?</a>
</div>
<div class="col-md-2"></div>
<div class="col-md-3">
    <h2>Pas encore inscrit ?</h2>
    <hr>
    <em>
        nous vous invitons à vous inscrire<br />
    </em>
    <br /><br />
    <a href="{{ path('fos_user_registration_register') }}" class="btn btn-primary">S'inscrire</a>
</div>


{% endblock fos_user_content %}

我认为有很多解决方案,但在我看来,这是推翻 fosuser 观点的更好方法