{{TWIG}}定义动态数组名称

时间:2018-04-21 18:20:10

标签: arrays twig

我在Shopwired平台上使用{{TWIG}}。硬编码到其中一个模板中的是一个画廊;

{# Render carousel #}
{% set gallery_name = 'global.theme.settings.gallery_location %}

这当然很有效,但是我想扩展这个并为我正在建设的网站制作一些动态画廊。

我已经想出如何附加/添加页面标题来构建它;

{# Render carousel #}
{% set gallery_name = 'global.theme.settings.gallery_' ~ title|lower %}
{% set images = gallery_name %}

当我使用{{images}}来回显结果时,它会输出字符串名称'global.theme.settings.gallery_location'(这对我所在的页面是正确的)而不是预期和期望的'Array'

以下内容必须接近正确,但它只输出数组中的一个项目。

{# Render carousel #}
{% set gallery_name = 'global.theme.settings.gallery_' ~ title|lower %}
{% set images = [gallery_name] %}

我很亲密......我做错了什么?

1 个答案:

答案 0 :(得分:0)

要使用动态密钥,您无法通过dot表示法来访问属性,因为编译器无法处理。使用attributearray表示法来访问数据。

{% set arr = {
     foo : {
         bar : {
             foobar : {
                 dynamic_index : 42,
             }
         }
     }
} %}

{% set key = 'dynamic' %}

{{ attribute(arr['foo']['bar']['foobar'], key~'_index') }} {# 42 #}

{{ arr['foo']['bar']['foobar'][key~'_index'] }} {# 42 #}