FOSUserBundle。在我的模板中包含登录表单
问题描述:
嗨我试图在我的自定义模板中包含FOSUser包的登录表单。这样的:FOSUserBundle。在我的模板中包含登录表单
{% include 'FOSUserBundle:Security:login.html.twig' %}
但我有此错误: Variable "error" does not exist in FOSUserBundle:Security:login.html.twig at line 7
有没有一种办法,包括没有在我的控制器增加一些模板?
答
要覆盖FosUserBundle的模板,你必须这样做:
- 在
app/Resources
- 复制你的文件夹中创建一个文件夹
FOSUserBundle/view
FOSUserBundle的视图文件夹,你必须创建之前
而且您可以包含您的模板和自定义FOSUser视图。
例子:
layout.html.twig FOSUser的在app/Resources/FOSUserBundle/view
:
{% 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视图的更好方法
答
此模板预计将显示为整页。要包含它,渲染the controller action可能会更方便。
{{ render(controller('FOSUserBundle:Security:login')) }}
很酷,我想用注册模板'{{render(controller('FOSUserBundle:Registration:register'))}}'做同样的事情,但它会呈现所有的页面内容。我怎样才能呈现表单? – Kevin
这有点棘手,因为它会要求重写包 - 请参阅@Letsrock的答案http://*.com/a/36885036/558866 –