无法访问宏中的全局数据或宏

Can't access global data or macro within macro

我是 patternlab 的新手,我只是将基于 php 的项目迁移到节点版本。 我在访问全局数据和块文件时遇到问题,这是我以前没有的。

我在 Mac 上使用模式实验室节点 v3.0,节点 v13.9.0,使用 Gulp 版 Twig。

source/_data/data.json

"img": {
    "landscape": {
      "w_1024": {
        "src": "../../images/1536x864_16x9.jpg",
        "alt": "16x9 Image"
      }
    }
  }

source/macros/ui.twig

{% macro icon( name ) %}
  {% if name == "airplay" %}<img src="airplay.png"/>{% endif %}
{% endmacro %}

source/02-organisms/00-global/file-1.twig

{% import "@macros/blocks.twig" as blocks %}
{% import "@macros/ui.twig" as ui %}
<p class="icon">{{ ui.icon( "airplay" ) }}</p>
<p class="output">{{img.landscape.w_1024.src}}</p>
{{ blocks.media(item) }}

source/macros/blocks.twig

{% import "@macros/ui.twig" as ui %}
{% macro media( params ) %}
<p class="icon2">{{ ui.icon( "airplay" ) }}</p>
<p class="output2">{{img.landscape.w_1024.src}}</p>
{% endmacro %}
预期行为

生成的 html 应如下所示:

<p class="icon"><img src="airplay.png"/></p>
<p class="output">../../images/1536x864_16x9.jpg</p>
<p class="icon2"><img src="airplay.png"/></p>
<p class="output2">../../images/1536x864_16x9.jpg</p>
实际行为

生成的 html 如下所示:

<p class="icon"><img src="airplay.png"/></p>
<p class="output">../../images/1536x864_16x9.jpg</p>
<p class="icon2"></p>
<p class="output2"></p>

欢迎任何帮助!

宏有自己的变量范围。如果你想访问任何其他定义的变量,你需要传递特殊变量 _context.

{% macro foo(bar, context) %}
    {{ bar }}
    {{ context['foo'] }}
{% endmacro %}

{% import _self as macros %}

{{ macros.foo(42, _context) }}

demo - demo with include