如何用包含的文件覆盖一个块

时间:2019-02-04 16:09:35

标签: twig

我想覆盖/扩展包含的树枝文件中layout.twig中的一个块。

我该如何实现?

这样做的原因是我将一些元素外包到了不同的树枝文件中,以便能够一次又一次地使用它们。 这些树枝文件应在layout.twig中展开。

我尝试了不同的解决方案:

embed标签仅覆盖包含文件中的块。

use标签不允许在layout.twig中扩展父块。

[https://github.com/rybakit/twig-deferred-extension]也没有达到预期的效果。

layout.twig

<div style="color:red;">
{% block content %}
    <h1>content: layout</h1>
{% endblock %}
</div>

<div style="color:blue;">
{% block morecontent %}
    <h1>morecontent: layout</h1>
{% endblock %}
</div>

content.twig

{% extends "layout.twig" %}

{% block content %}
    <h1>content: content</h1>

    {% include "include.twig" %}
    {% include "include2.twig" %}
{% endblock %}

include.twig

<h1>content: include</h1>

{% block morecontent %}
    <h1>morecontent: include</h1>
{% endblock %}

include2.twig

<h1>content: include2</h1>

{% block morecontent %}
    <h1>morecontent: include2</h1>
{% endblock %}

这样,所包含文件的“ morecontent”将直接放在内容之后。

<div style="color:red;">
    <h1>content: content</h1>
    <h1>content: include</h1>
    <h1>morecontent: include</h1>
    <h1>content: include2</h1>
    <h1>morecontent: include2</h1>
</div>
<div style="color:blue;">
    <h1>morecontent: layout</h1>
</div>

但是我希望它们位于layout.twig的morecontent块中

 <div style="color:red;">
    <h1>content: content</h1>
    <h1>content: include</h1>
    <h1>content: include2</h1>
</div>
<div style="color:blue;">
    <h1>morecontent: layout</h1>
    <h1>morecontent: include</h1>
    <h1>morecontent: include2</h1>
</div>

0 个答案:

没有答案