Twig,在includes中传入块(例如h1)

Twig, pass in block (e.g. h1) in includes

如果我包含这样的模板:

{% include 'mytemplate.twig' %}

我可以像这样传递一个块吗?例如:

{% include 'mytemplate.twig' 
    <h1>Hello World</h1>
%}

并在我的其他模板 中呈现它。类似这样的内容:

// mytemplate.twig

<div>
    {{ content }}
</div>

也许:

{% include 'mytemplate.twig' 
   with {
       content: '<h1>Hello World</h1>'
   }
%}

您可以拥有一个父模板并mytemplate.twig扩展它:

// parent_template.twig

<div>
    {% block content %}{% endblock %}
</div>

// mytemplate.twig

{% extends 'parent_template.twig' %}

{% block content %}<h1>Hello World</h1>{% endblock %}

或者在include中传递一个参数:

{% include 'mytemplate.twig' with { 'content': 'Hello World' } %}

并在 mytemplate.twig 中:

<div>
    <h1>{{ content }}</h1>
</div>

您有 2 个选择:

  1. 将内容作为变量传递:

    {% include 'mytemplate.twig' with {'content': 'Title', } %}

请注意,您需要将模板修改为:{{ content | raw }} 以便解析 HTML

  1. 在模板中定义一个块:

    {% block content %}{% endblock %}


然后用embed代替:

{% embed "mytemplate.twig" %}
{% block content %}
   <h1>Title</h1>
{% endblock %}
{% endembed %}