Symfony 使用;进口;对;从「;将宏导入到细枝模板并扩展它时

Symfony 使用;进口;对;从「;将宏导入到细枝模板并扩展它时,symfony,twig,Symfony,Twig,将宏导入细枝模板,然后扩展该模板时,子级可以使用该宏。例如,我们定义了一个宏: ExampleBundle::macros.html.twig: {% macro echoSomeText(input) %} {{ input }} {% endmacro %} {% import 'ExampleBundle:macros.html.twig' as macros %} {% extends 'ExampleBundle::base.html.twig' %} {{ macros.ech

将宏导入细枝模板,然后扩展该模板时,子级可以使用该宏。例如,我们定义了一个宏:

ExampleBundle::macros.html.twig:

{% macro echoSomeText(input) %}
{{ input }}
{% endmacro %}
{% import 'ExampleBundle:macros.html.twig' as macros %}
{% extends 'ExampleBundle::base.html.twig' %}

{{ macros.echoSomeText('Hello!') }}
在我们计划扩展的模板中,我们导入宏:

ExampleBundle::base.html.twig:

{% macro echoSomeText(input) %}
{{ input }}
{% endmacro %}
{% import 'ExampleBundle:macros.html.twig' as macros %}
{% extends 'ExampleBundle::base.html.twig' %}

{{ macros.echoSomeText('Hello!') }}
在某些模板中,我们扩展了基本模板并使用宏:

ExampleBundle::othertemplate.html.twig:

{% macro echoSomeText(input) %}
{{ input }}
{% endmacro %}
{% import 'ExampleBundle:macros.html.twig' as macros %}
{% extends 'ExampleBundle::base.html.twig' %}

{{ macros.echoSomeText('Hello!') }}
这一切都很好。但是,如果我将基本模板更改为使用
from
标记而不是
import

{% from 'ExampleBundle:macros.html.twig' import echoSomeText %}
我无法再访问子模板中的宏

我曾试图找到并理解这方面的文档,但运气不太好。我的假设是,这不是一个bug,而是与Twig如何处理名称空间和
导入有关。。。as
语法将宏作为变量插入可扩展名称空间,但这只是猜测

有人知道为什么这些标签行为不同,以及它是如何工作的吗

我最终要寻找的是一种干净的方法,将大量常用的宏导入到一个基本模板中,然后我可以在整个子模板中使用它,但无需为每个宏指定唯一的名称。换句话说,我试图避免通过
macroA.macroName
macroB.otherName
等方式调用它们,而更愿意将它们称为
macroName
otherName
等等