Twig阻止内容加入

时间:2016-01-12 21:40:16

标签: symfony twig

我正在尝试将{% block body %}放入{% include 'bundle::...' %}。这是我的代码:

{% extends '::base.html.twig' %}

{% block title %}{{ id }}{% endblock %}

{% block content %}

    {% include 'scraperBundle::Event/sideLeft.html.twig' %}
    {% include 'scraperBundle::Event/sideRight.html.twig' %}

{% endblock %}

{% block body %}
    stuff here to go ingo block body
{% endblock %}

问题是所有内容都正确加载,但我的{% block body %}没有进入应该放置的位置,这位于{% include 'scraperBundle::Event/sideLeft.html.twig' %}文件中:

<div class="event-info">
    {% block body %}{% endblock %}
</div>

我不熟悉Twig,有人知道正确的方法或如何做到这一点?

感谢。

==============编辑==============

我可以嵌套{% block nameof %}吗?

{% extends '::base.html.twig' %}

{% block title %}{{ id }}{% endblock %}

{% block content %}

    {% embed 'scraperBundle::Event/sideLeft.html.twig' %}

        {% block body %}
        {% endblock %}

    {% endembed %}

    {% embed 'scraperBundle::Event/sideRight.html.twig' %}

{% endblock %}

==============编辑2(工作)==============

添加了第二个{% endembed %},现在可行了。我猜你确实可以嵌套{% block %}个东西。

我可以嵌套{% block nameof %}吗?

{% extends '::base.html.twig' %}

{% block title %}{{ id }}{% endblock %}

{% block content %}

    {% embed 'scraperBundle::Event/sideLeft.html.twig' %}

        {% block body %}
        {% endblock %}

    {% endembed %}

    {% embed 'scraperBundle::Event/sideRight.html.twig' %}
    {% endembed %}

{% endblock %}

2 个答案:

答案 0 :(得分:1)

您无法覆盖include d模板中的阻止。您正在寻找的是embed

# template1.html.twig

{% embed "template2.html.twig" %}
    {% block override_me %}
        This will override "HAI" text
    {% endblock %}
{% endembed %}

# template2.html.twig

Something here
{% block override_me %}HAI{% endblock %}

答案 1 :(得分:1)

您无法从包含的模板中指定或覆盖块。有关为什么不起作用的背景信息,请参阅this answer的类似问题。

不过,

{% embed %}会做你需要的。

对于第二个问题:可以嵌套块。在实践中,嵌套块很常见。