Twig语法-如何从嵌套动态键中获取价值

时间:2018-08-09 10:52:57

标签: php twig opencart

最近我一直在进行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

1 个答案:

答案 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') }}