我正在使用FOSUserBundle在我的Symfony应用程序是非常好的.他们在单独的模板中登录和注册表单.我想要在一个模板中同时显示它们.
因此,我创建了应用程序/ Resources / FOSUserBundle / Security / login.html.twig和app / Resources / FOSUserBundle / Registration / register.html.twig来覆盖这两个模板.在login.html.twig中,我调用寄存器控制器来渲染其模板.
应用程序/资源/ FOSUserBundle /安全/ login.html.twig:
{% extends "FOSUserBundle::layout.html.twig" %} {% trans_default_domain '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 }}" /> <input type="text" id="username" name="_username" value="{{ last_username }}" placeholder="{{ 'security.login.username'|trans }}" required="required" /> <input type="password" id="password" name="_password" placeholder="{{ 'security.login.password'|trans }}" 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> {{ render(controller('FOSUserBundle:Registration:register')) }} {% endblock fos_user_content %}
应用程序/资源/ FOSUserBundle /报名/ register.html.twig:
{% include "FOSUserBundle:Registration:register_content.html.twig" %}
但是,我收到以下错误:
FatalErrorException: Error: Maximum function nesting level of '100' reached,aborting! in /private/var/www/symfony/My_UserBundle/vendor/twig/twig/lib/Twig/Node/Expression/Array.PHP line 31
我不知道为什么我收到这个错误消息.如果我查看安全性:登录和注册:注册控制器,模板将以不同的方式呈现:
$this->renderLogin(...
和
$this->container->get('templating')->renderResponse('FOSUserBundle:Registration:register.html....
所以基本上我有两个问题:
解决方法
你可以使用(如@Sidali Hallak所说)
{% render url('fos_user_registration_register') %} {% render url('fos_user_security_login') %}
但使用您自己的版本的FOSUserBundle:注册:register.html.twig和FOSUserBundle:安全性:login.html.twig模板不扩展FOSUserBundle :: layout.html.twig