为了账号安全,请及时绑定邮箱和手机立即绑定

只替换树枝中的一个嵌套块

只替换树枝中的一个嵌套块

PHP
Helenr 2022-07-22 10:34:32
我有以下树枝结构:基地.twig<html>  <head>  </head>  <body class="fade-in {{body_class}}">    <main>      {% block menu %}          {% include 'menu.twig' %}      {% endblock %}    </main>  </body></html>菜单.twig<header>  <div>    {% block menu_main %}       {% include 'menu-main.twig' %}    {% endblock %}    {% block menu_country %}        {% include 'menu-country.twig' with { menu_country: dropdownland } %}    {% endblock %}  </div></header>孩子.twig{% extends "base.twig" %}{% block menu %}  {% block menu_country %}    {% include 'menu-country.twig' with { menu_country: menu_ap_countries } %}  {% endblock %}{% endblock %}我想要实现的是,只需替换 child.twig 中的块menu_country。如果我使用上面的方法,整个块菜单将被替换为只有menu_country,这意味着块menu_main丢失。我也试过{% extends "base.twig" %}{% block menu %}  {{ parent() }}  {% block menu_country %}    {% include 'menu-country.twig' with { menu_country: menu_ap_countries } %}  {% endblock %}{% endblock %}但这会渲染块menu_country两次。有什么办法可以做到这一点?
查看完整描述

2 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

由于@DarkBees 的回答进一步调查后,我遇到了嵌入功能,这正是我在这种情况下所需要的。所以扩展模板变成了这样:


{% block menu %}

  {% embed 'menu.twig'%}

    {% block menu_country %}

      {% include 'menu-country.twig' with { menu_country: menu_ap_countries } %}

    {% endblock %}

  {% endembed %}

{% endblock %}

通过嵌入,我可以覆盖里面的块menu.twig


查看完整回答
反对 回复 2022-07-22
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

包括模板并不意味着您正在模板中导入所述块。这意味着只有块menu将存在于内部child.twig。


在您的第一个示例中,您实际上只是覆盖该块menu并在其中创建一个新块menu_country。


在您的第二个示例中,您twig要输出块的默认内容menu并向其附加一个新块menu_country。


一个可能的解决方案是将设置更改为此,例如


菜单.twig


<header>

  <div>

    {% block menu_main %}

       {% include 'menu-main.twig' %}

    {% endblock %}


    {% block menu_country %}

        {% include 'menu-country.twig' %}

    {% endblock %}

  </div>

</header>

菜单国家.twig


<ul class="country">

{% for country in menu_country|default(dropdownland) %}

    <li><a href="#">{{ country }}</a></li>

{% endfor %}

</ul>

孩子.twig


{% extends "base.twig" %}


{% block menu %}

    {% include 'menu.twig' with { menu_country: menu_ap_countries, } %}

{% endblock %}


查看完整回答
反对 回复 2022-07-22
  • 2 回答
  • 0 关注
  • 76 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信