【发布时间】:2025-11-28 01:15:01
【问题描述】:
我将 Symfony2 框架与 FOSUserBundle 结合使用。我通过覆盖一些 FOSUserBundle 模板修改了布局。这工作得很好! 唯一的问题是我无法在我的模板中设置扩展 FOSUserBundle 模板的变量,这些模板被我自己的模板覆盖。很难描述,但我试试看:
我正在像这样覆盖 Registration/register_content.html.twig:
{% trans_default_domain 'FOSUserBundle' %}
{% set section='register' %}
<h1>{{ 'Anmeldung'|trans }}</h1>
<form action="{{ path('fos_user_registration_register') }}" {{ form_enctype(form) }} method="POST">
{{ form_widget(form) }}
<div>
<input type="submit" value="{{ 'registration.submit'|trans }}" />
</div>
</form>
(/home/simon/server/html/portal/app/Resources/FOSUserBundle/views/Registration/register_content.html.twig)
关键是我想为我的包的 layout.html.twig 设置 section 变量以突出显示菜单中的当前部分。这适用于我的常规模板(不会被 FOSUserBundle 覆盖)
我还从 FOSUserBundle 覆盖了 layout.html.twig:
{% extends 'MyBundle::layout.html.twig' %}
{% block content %}
{% block fos_user_content %}{% endblock %}
{% endblock %}
(/home/simon/server/html/portal/app/Resources/FOSUserBundle/views/layout.html.twig)
如果我在该布局文件中设置我的变量 direclty,它就可以工作。但这不是我想要的。
我该如何解决这个问题?
附加信息:
我的菜单是这样的
<ul class="nav nav-pills menu">
{% if section is not defined %}
{% set section = '__dummy_undefined' %}
{% endif %}
<li{% if section == 'home' %} class="active"{% endif %}><a href="{{ path('home') }}"> {{ 'general.home'|trans }}</a></li>
<li{% if section == 'search' %} class="active"{% endif %}><a href="{{ path('search') }}">{{ 'general.search'|trans }}</a></li>
<li{% if section == 'events' %} class="active"{% endif %}><a href="{{ path('events') }}">{{ 'general.calendar'|trans }}</a></li>
<li{% if section == 'register' %} class="active"{% endif %}><a href="{{ path('fos_user_registration_register') }}">{{ 'general.register'|trans }}</a></li>
</ul>
所以变量是在使用之前定义的。 该菜单包含在一个 menu.html.twig 文件中,该文件的包含如下:
{% include 'DancePortalFrontendBundle::headline.html.twig' %}
包含在之前 {% 块内容 %} 这不应该显示! {% endblock %}
但即使我在内容块之后或内容块中执行包含,我也没有得到我在 register_content.html.twig 中设置的部分值
有人知道怎么解决吗?
【问题讨论】:
标签: php symfony templates twig fosuserbundle