最近我一直在进行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
答案 0 :(得分:2)
如果您真的想要一个更“轻松”的解决方案,那么我唯一能建议的就是在twig
中添加一个函数来完成u的组合
<?php
$twig->addFunction(Twig_SimpleFunction('dynamic_value', ($context, ...$keys) {
return isset($context[implode('_', $keys)]) ? $context[implode('_', $keys)] : null;
}, ['needs_context' => true, ]);
然后您可以在twig
{{ dynamic_value('module_default', geo_zone.geo_zone_id, customer_group.customer_group_id, 'flat') }}