Синтаксис Twig - Как получить значение из вложенного динамического ключа

Недавно я работал над проектом opencart 3, где я столкнулся с требованием, требующим вложенного динамического значения, т.е.

{{ 'module_default_{{ geo_zone.geo_zone_id }}_{{ customer_group.customer_group_id }}_flat' }}

geo_zone - это динамический ключ, который дает определенное значение, как и customer_group_id.

Основываясь на приведенных выше динамических значениях, мы получаем ключ, чтобы сказать, что module_default_0_1_flat теперь становится ключом моего плагина. Таким образом, используя указанный выше ключ, мы можем получить определенное значение.

{{ module_default_0_1_flat }}

Я знаю, что мы можем определить ключ в переменной, но мне нужно определить огромное количество переменных, если будет принят такой подход.

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

Вот некоторые известные факты

Учитывая возникшую проблему с дублированием, я хорошо осведомлен о том, как получить доступ к динамической переменной. Если бы мне пришлось устанавливать переменные, я бы сделал это, вместо того, чтобы терять много времени.

Что ж, я хочу знать, как вы можете достичь этой постановки задачи, не создавая несколько переменных, в которых нет необходимости.

Следовательно, я не ищу такого решения

{% set long = 'long' %}
{% set variable = 'variable' %}
{% set name = 'name' %}
{% set here = 'here' %}

Скорее ищу действенный способ разрешения конфликтов.

TIA

Возможный дубликат Имя переменной из _multiple_ переменных в Twig

DarkBee 09.08.2018 12:57

Ребята, вы пытались понять или не удосужились прочитать мой запрос о том, что вы помечаете его как повторяющийся?

silverFoxA 09.08.2018 13:00

Вы понимаете, что скопированный вами фрагмент вообще не имеет смысла, потому что я просто использовал его в качестве примера? Скорее взгляните на мой второй фрагмент в связанном ответе

DarkBee 09.08.2018 13:29
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
94
1

Ответы 1

Если вам действительно нужно более "простое" решение, то единственное, что я могу предложить, - это добавить в twig функцию, которая объединяет за вас.

<?php
    $twig->addFunction(Twig_SimpleFunction('dynamic_value', ($context, ...$keys) {
        return isset($context[implode('_', $keys)]) ? $context[implode('_', $keys)] : null;
    }, ['needs_context' => true, ]);

Тогда U могло бы что-то подобное внутри twig

{{ dynamic_value('module_default', geo_zone.geo_zone_id, customer_group.customer_group_id, 'flat') }}

Другие вопросы по теме