You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Twig 2.x的嵌套模板中覆写block?

Twig嵌套模板覆写嵌套Block的解决方案

问题核心:你无法覆写nestedblock,是因为它是myblock的嵌套子Block,Twig中嵌套Block的覆写需要保持层级结构,直接在子模板顶层定义nestedblock不会生效。

正确写法示例

假设你的父模板(base.twig)结构如下:

Hi 

{% block myblock %}
    myblock 
    {% block nestedblock %}
        nestedblock
    {% endblock %}
{% endblock %}

子模板需要在覆写myblock的同时,在其内部重新定义nestedblock,写法如下:

{% extends 'base.twig' %}

{% block myblock %}
    custom myblock 
    {% block nestedblock %}
        custom nestedblock
    {% endblock %}
{% endblock %}

原理说明

Twig的Block是层级作用域的,nestedblock属于myblock的内部Block,只有在myblock的覆写块内重新定义它,才能替换父模板中对应位置的内容。如果直接在子模板顶层写{% block nestedblock %},它的作用域和父模板里的嵌套nestedblock不匹配,因此无法覆盖。

效果验证

修改后输出将符合预期:

Hi

custom myblock 

custom nestedblock

内容的提问来源于stack exchange,提问作者greew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 19:10:38