Недавно я работал над проектом 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
Ребята, вы пытались понять или не удосужились прочитать мой запрос о том, что вы помечаете его как повторяющийся?
Вы понимаете, что скопированный вами фрагмент вообще не имеет смысла, потому что я просто использовал его в качестве примера? Скорее взгляните на мой второй фрагмент в связанном ответе
Если вам действительно нужно более "простое" решение, то единственное, что я могу предложить, - это добавить в 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') }}
Возможный дубликат Symfony2 - Как получить доступ к именам динамических переменных в twig