Twig在不同的循环中使用一个值

时间:2017-11-22 21:01:46

标签: symfony twig

由于我使用SaaS平台,因此我没有太多空间以不同的方式做事。

我在Twig中有两个for循环:

 {% for option in product.options %}
  {{ option.title }}
   {% if option.values %}
    {% for value in option.values %}     
     {{ value.title }}
    {% endfor %}
   {% endif %}  
  {% endfor %} 

{% for variant in product.variants %}
 {{ variant.stock.level }}
{% endfor %}

我尝试做的是在variant.stock.level for循环中使用product.options值来显示一些HTML。此值始终与另一个for循环的相应索引值匹配。我也认为这是唯一的方法。

所以我的意思是.....我们说两个for循环包含3个元素。

选项1 选项2 选项3

VARIANT1 VARIANT2 VARIANT3

因此option1需要具有variant1的值。

对于最终结果,我需要知道例如Variant1的值是什么,以显示一些HTML如此:

{% for value in option.values %}   

 {% check if value from corresponding variant is greater then 0 %}
   <li class="on-stock">{{ value.title }}</li>  
 {% else %} 
   <li class="out-of-stock">{{ value.title }}</li>
 {% endif %}


{% endfor %}

我不知道别的方式来解释这个:)任何帮助表示赞赏....

2 个答案:

答案 0 :(得分:0)

您正在寻找attribute

  

属性功能可用于访问&#34;动态&#34;变量的属性

由于索引相同,您可以使用loop.index0

您的案例示例

{% if attribute(option.variants, loop.index0) > 0 %}
    // some stuff
{% endif %}

答案 1 :(得分:0)

我不确定我是否理解正确,但您可以使用第一个循环中的密钥来访问具有相同索引的product.variants。

{% for key, option in product.options %}
  {{ option.title }}
  {% if option.values %}
    {% for value in option.values %}     
      {{ value.title }}
    {% endfor %}
  {% endif %}  
  {{ product.variants[key].stock.level }}
{% endfor %}