{{TWIG}} Определить имя динамического массива

Stuart спросил: 28 марта 2018 в 04:40 в: arrays

Я использую {{TWIG}} с Shopwired Platform. Жестко закодированный в один из шаблонов - галерея;

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

Это, конечно, работает и отлично, однако я хотел бы расширить это и сделать некоторые динамические галереи для сайта I Я построил.

Я выяснил, как добавить / добавить заголовок страницы для его создания,

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

Когда я использую {{images}} для эха в результате он выдает имя строки "global.theme.settings.gallery_location" (что правильно для страницы, на которой я включен), а не "Массив", как ожидалось и желательно.

Следующее, должно быть почти справа, но он выводит только один элемент из массива.

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

Я близко ... что я делаю неправильно?

1 ответ

DarkBee ответил: 29 марта 2018 в 08:10

Чтобы использовать динамические ключи, вы не можете ссылаться в нотации dot на доступ к свойствам, так как компилятор не может это обработать. Для доступа к данным используйте attribute или нотацию array.

{% 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 #}