gpt4 book ai didi

symfony - Twig:包含另一个模板的 block

转载 作者:行者123 更新时间:2023-12-04 10:23:00 29 4
gpt4 key购买 nike

我只想包含另一个模板的某个块的内容。是否可以只访问块的内容而不是整个文件?

据我所知,embedinclude始终包含并输出整个文件。和 use导入所有块,显然(?)目标文件需要硬编码,不能是传递给模板的表达式或变量。那是对的吗?

最佳答案

使用宏 https://twig.symfony.com/doc/2.x/tags/macro.html

渲染块模板(由 Web Profiler 使用):https://twig.symfony.com/doc/2.x/functions/block.html

{{ block("title", "common_blocks.twig") }}

Symfony WebProfiler - 块和模板的有趣用法

Symfony WebProfiler 就是一个很好的例子:

供应商/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Collector/request.html.twig

每个分析器 View 模板都有 3 个块:
  • 菜单
  • 面板
  • 工具栏

  • 然后它根据需要渲染每个块。

    工具栏示例:vendor/symfony/symfony/src/Symfony/Bundle/WebProfilerBundle/Resources/views/Profiler/toolbar.html.twig
    <!-- START of Symfony Web Debug Toolbar -->
    <div id="sfMiniToolbar-{{ token }}" class="sf-minitoolbar" data-no-turbolink>
    <a href="#" title="Show Symfony toolbar" tabindex="-1" id="sfToolbarMiniToggler-{{ token }}" accesskey="D">
    {{ include('@WebProfiler/Icon/symfony.svg') }}
    </a>
    </div>
    <div id="sfToolbarClearer-{{ token }}" class="sf-toolbar-clearer"></div>

    <div id="sfToolbarMainContent-{{ token }}" class="sf-toolbarreset clear-fix" data-no-turbolink>
    {% for name, template in templates %}
    {% if block('toolbar', template) is defined %}
    {% with {
    collector: profile.getcollector(name),
    profiler_url: profiler_url,
    token: profile.token,
    name: name,
    profiler_markup_version: profiler_markup_version,
    csp_script_nonce: csp_script_nonce,
    csp_style_nonce: csp_style_nonce
    } %}
    {{ block('toolbar', template) }}
    {% endwith %}
    {% endif %}
    {% endfor %}

    <a class="hide-button" id="sfToolbarHideButton-{{ token }}" title="Close Toolbar" tabindex="-1" accesskey="D">
    {{ include('@WebProfiler/Icon/close.svg') }}
    </a>
    </div>
    <!-- END of Symfony Web Debug Toolbar -->

    关于symfony - Twig:包含另一个模板的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47960681/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com