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 的模板,您必须这样做:
- 在
app/Resources
中创建文件夹 FOSUserBundle/view
- 将 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 观点的更好方法
您好,我正在尝试将 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 的模板,您必须这样做:
- 在
app/Resources
中创建文件夹 - 将 FOSUserBundle 的视图文件夹复制到您刚刚创建的文件夹中
FOSUserBundle/view
并且您可以包含您的模板和自定义 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 观点的更好方法