FOSUserBundle。在我的模板中包含登录表单

问题描述:

嗨我试图在我的自定义模板中包含FOSUser包的登录表单。这样的:FOSUserBundle。在我的模板中包含登录表单

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

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

有没有一种办法,包括没有在我的控制器增加一些模板?

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

  1. app/Resources
  2. 复制你的文件夹中创建一个文件夹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')) }} 
+0

很酷,我想用注册模板'{{render(controller('FOSUserBundle:Registration:register'))}}'做同样的事情,但它会呈现所有的页面内容。我怎样才能呈现表单? – Kevin

+0

这有点棘手,因为它会要求重写包 - 请参阅@Letsrock的答案http://*.com/a/36885036/558866 –