Twig 细枝在';如果定义了变量';,即使定义了变量

Twig 细枝在';如果定义了变量';,即使定义了变量,twig,Twig,我想在设置变量时包含一个模板。未设置变量时,不得包含模板 {% if data is defined %} {% block content %} {% include 'data.html.twig' with { 'data' : data} %} {# Line 14 #} {% endblock %} {% endif %} 但是这张支票不起作用。如果未定义数据,则会发生错误: Twig_Error_Runtime: Variable "data

我想在设置变量时包含一个模板。未设置变量时,不得包含模板

{% if data is defined %}
    {% block content %}
        {% include 'data.html.twig' with  { 'data' : data} %} {# Line 14 #}
    {% endblock %}  
{% endif %}
但是这张支票不起作用。如果未定义
数据
,则会发生错误:

 Twig_Error_Runtime: Variable "data" does not exist in "text.html.twig" at line 14

但是当定义了
数据时,Twig必须跳过该行。谁能解释这种行为,更重要的是:我如何解决这个问题?

多亏了我的室友,我找到了解决办法。
if
必须位于
块中。我仍然不知道为什么需要这样做

 {% block content %}
    {% if data is defined %}
        {% include 'data.html.twig' with  { 'data' : data} %} {# Line 14 #}
   {% endif %}
{% endblock %}

这是非常不寻常的。我只是复制了你的示例并创建了一个测试,我没有这个问题,即使启用了严格模式。可能是个虫子。你知道你使用的是哪个版本的Twig吗?很高兴知道,这仍然很奇怪,如果我想替换内容块或使用默认的Twig,那会很不方便,但是我想你可以使用
{%else%}{{parent()}
谢谢你——我刚刚遇到了一个奇怪的问题,我的视图的基础模板需要覆盖扩展视图的某些部分,而Twig会忽略明显的条件,直到我发现这个问题。Twig文档中没有解释它们需要在块中才能按预期工作。