Twig - 使用父模板中的宏

Kas*_*syx 2 import macros twig

让我说我有一个简单的宏macro.html.twig:

{% macro simple_macro() %}
    <h1>Simple macro</h1>
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)

继承人模板layout.html.twig:

{% block body %}{% endblock %}
Run Code Online (Sandbox Code Playgroud)

和主文件content.html.twig:

{% extends 'layout' %}

{% from 'simple_macro' import simple_macro %}

{% block body %}
    {{ simple_macro() }}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

下面的代码工作,但我有很多文件content.html.twig,我不想复制/粘贴{% from 'simple_macro' import simple_macro %}在每个文件中.所以我把这一行改为layout.html.twig:

{% from 'simple_macro' import simple_macro %}

{% block body %}{% endblock %}
Run Code Online (Sandbox Code Playgroud)

但它会引发错误:

The function "simple_macro" does not exist in "content".

这是我的问题:是否可以在父模板中导入宏并在子模板中使用它们?

感谢您的时间.

Nie*_*jes 8

不,这是不可能的.宏必须在您使用它们的特定文件中导入,并且这种行为是设计用于增加代码的详细程度和可读性 - 如果您可以在模板中使用大量随机标记而不清楚,则生活将不会更加清晰他们被定义的地方的线索.