将基本模板变量覆盖为另一个包 {Symfony 3 TWIG} 中的子模板

Rup*_*ase 5 php symfony twig

我在base.html.twig文件中添加了一些变量我在“bundle”中有另一个文件index.html.twig文件

我在index.html.twig中扩展了base.html.twig文件,该文件工作正常,因为当我调用index.html.twig时,我可以看到base中的所有内容都在浏览器中呈现,但是当我尝试覆盖变量时来自index.html.twigbase.html.twig文件不起作用

这是代码

base.html.twig

    <!DOCTYPE html>
        <html>
            <head>
                <meta charset="UTF-8" />
                <title>{% block title %}Welcome!{% endblock %}</title>
                {% block stylesheets %}

                {% endblock %}
                <link rel="icon" type="image/x-icon" href="{{ asset('favicon') }}" />
            </head>
            <body>
           {% set isHeader      = (isHeader|default(true)) %}

{% if isHeader == true %}
            <div class="container-fluid header">
                {% include 'header.html.twig' %}
                {% block header %}

                {% endblock %}
            </div>
            {% endif %}

    </body>
    </html>
Run Code Online (Sandbox Code Playgroud)

索引.html.twig

{% extends 'base.html.twig' %}

{% set isHeader         = false %}
Run Code Online (Sandbox Code Playgroud)

这应该隐藏标题,但它仍然显示标题,就像我在base.html.twig文件中执行 isHeader = false 一样,它工作正常

Ali*_*Ali 5

你的方法太奇怪了,我不确定你为什么这样做,根据我从问题中发现的内容,尝试做这样的事情:

在基地:

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8" />
            <title>{% block title %}Welcome!{% endblock %}</title>
            {% block stylesheets %}

            {% endblock %}
            <link rel="icon" type="image/x-icon" href="{{ asset('favicon') }}" />
        </head>
        <body>
       {%block top_header %}
            <div class="container-fluid header">
               {% include 'header.html.twig' %}
                {% block header %}

                {% endblock %}
            </div>
        {%endblock%}
</body>
</html>
Run Code Online (Sandbox Code Playgroud)


在索引中:

{% extends 'base.html.twig' %}
{% block top_header %}{% endblock %} //keep this empty , remove the top_header content
Run Code Online (Sandbox Code Playgroud)