【问题标题】:How to define an array in twig如何在树枝中定义一个数组
【发布时间】:2015-10-27 06:15:01
【问题描述】:

我需要根据来自控制器的值在twig 中显示图像。例如,如果来自控制器的值是(房屋或房屋或翻新或翻新或租金或租金)并且列表继续存在,则应该出现在房屋图像中。

目前正在做的事情如下

{% if goal == "house" or  goals == "House" or goal == "home" or  goals == "Home" %}
<img src="{{ asset('bundles/bundlename/images/house.jpg') }}">
{% endif %}

列表很长,很快就会失控。所以我想简单地在 twig 中创建一个数组,并检查来自控制器的值是否存在于我在 twig 中用于显示图像的那个数组上。

【问题讨论】:

    标签: php symfony twig


    【解决方案1】:

    您可以使用{key: value}[value1, value2] 语法定义数组。阅读更多关于数组和树枝本身的信息here

    你可以这样做:

    {% set images = {
        "house.jpg": ["house", "House", "home", "Home"]
    
        ... some more rules ...
    
    } %}
    
    {% for image, keys in images %}
        {% if goal in keys %}
            <img src="{{ asset('bundles/bundlename/images/' ~ image) }}">
        {% endif %}
    {% endfor %}
    

    如果您总是需要检查这两种情况,您还可以将代码简化为 {% if goal|lower in keys %} 并仅以小写形式定义键。

    【讨论】:

    • 我认为这是一个很好的解决方案。我还建议在config.yml 中添加资产图像路径定义,以便您以最佳方式管理资产。
    【解决方案2】:

    在 twig 中定义一个数组

    {% set section = { foo:{ heading:"bar" } } %}
    
    {{ section.foo.heading }}
    
    bar //output
    
    
    
    {% set section = { foo:"bar" } } %}
    
    {{ section.foo }}
    
    bar //output
    
    
    {% set section = { foo:"bar", one:"two" } } %}
    
    {{ section.one }}
    
    two //output
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-30
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      • 2018-10-09
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多