即使定义了变量,Twig也会在'if variable is defined'中运行

时间:2012-12-18 20:53:29

标签: twig

我想在设置变量时包含模板。如果未设置变量,则不得包含模板。

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

但这项检查不起作用。如果未定义data,则会发生错误:

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

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

1 个答案:

答案 0 :(得分:11)

感谢我的室友,我找到了解决方案。 if必须位于block。我仍然不知道为什么这是必需的。

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