假设我在 macro.html.twig
中有一个简单的宏:
{% macro simple_macro() %}
<h1>Simple macro</h1>
{% endmacro %}
继承人模板layout.html.twig:
{% block body %}{% endblock %}
和主文件content.html.twig
:
{% extends 'layout' %}
{% from 'simple_macro' import simple_macro %}
{% block body %}
{{ simple_macro() }}
{% endblock %}
以下代码有效,但我有很多文件,例如 content.html.twig
,我不想复制/粘贴 {% from 'simple_macro' import simple_macro %}
在每个文件中。所以我将这一行移到了layout.html.twig
:
{% from 'simple_macro' import simple_macro %}
{% block body %}{% endblock %}
但它抛出错误:
“content”中不存在函数“simple_macro”。
这是我的问题: 是否可以在父模板中导入宏并在子模板中使用它们?
感谢您的宝贵时间。
最佳答案
不,这是不可能的。宏必须导入到您使用它们的特定文件中,这种行为是设计来增加代码的冗长性和可读性的——如果您可以在模板中使用大量随机标签而没有明确的代码,生活就不会变得更加清晰它们在哪里被定义的线索。
关于macros - Twig - 使用来自父模板的宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20740230/