【问题标题】:Twig - interpolating variablesTwig - 插值变量
【发布时间】:2014-07-29 06:07:35
【问题描述】:

我有以下几点:

{% if promo.monday_unavailable == 1 %} 
    not available mondays 
{% elseif promo.monday_available == 1%}
    available mondays 
{% else %}
    available mondays from {{promo.monday_start}} until {{promo.monday_end}}
{% endif %}
<br />
{% if promo.tuesday_unavailable == 1 %} 
    not available tuesdays 
{% elseif promo.tuesday_available == 1%}
    available tuesdays 
{% else %}
    available tuesdays from {{promo.tuesday_start}} until {{promo.tuesday_end}}
{% endif %}
<br />

...

我希望一周中的每一天都这样做。

我想知道是否有一种方法可以简化代码阅读

{% for i in ['monday','tuesday','wednesday','thursday','friday','saturday','sunday'] %}

{% if promo.~i~"_unavailable" == 1 %} 
    not available mondays 
{% elseif promo.~i~"_available" == 1%}
    available mondays 
{% else %}
    available mondays from {{promo.~i~"_start"}} until {{promo.~i~"_end"}}
{% endif %}
<br />

{% endfor %}

用树枝。

任何帮助将不胜感激。我不知道该搜索什么关键字了。

【问题讨论】:

    标签: php symfony twig templating


    【解决方案1】:

    我知道这是一个旧线程,但 twig 支持内联插值,例如:

    {{i18n("language_#{langId}")}}
    

    重要的是要插入的字符串带有双引号。

    【讨论】:

      【解决方案2】:

      用我的额头敲击键盘找到答案。

      而不是

      {% if promo.~i~"_unavailable" == 1 %} 
      

      使用

      {% promo[i~"_unavailable"] == 1 %)
      

      【讨论】:

      • 我要补充一点,如果promo 是一个对象,则必须实现ArrayAccess 接口(至少对于Twig 1.16 版)。看来,Twig 将在使用 getter 之前使用接口实现访问对象属性,如 Twig 文档here 中所述
      • 您还可以使用字符串插值功能promo["#{i}_unavailable"],如Twig documentation(1.16 版)中所述
      【解决方案3】:

      你可以试试我的代码

      {% for i in ['monday','tuesday','wednesday','thursday','friday','saturday','sunday'] %}
          {% set key = i ~ '__unavailable' %}
      
          {% if (promo[key]) eq something %}
              //
          {% endif %}
      {% endfor}
      

      【讨论】:

      • 请永远不要在 Stack Overflow 上发布纯代码答案。 每个答案都应包含教育解释,旨在帮助 OP 和成千上万的未来研究人员。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-19
      • 1970-01-01
      • 2017-09-23
      • 2016-11-10
      相关资源
      最近更新 更多