Twig-不包含空值的打印数组

时间:2019-03-08 08:15:09

标签: php loops twig

我有这样构造的数组

add_to_context('custom', [
  [
   'title' => 'My title',
   'link' => 'My link'
  ],
  [
    'title' => 'My title 1',
    'link' => 'My link 1'
  ]
]);

鉴于我有一个简单的循环

{% for item in custom %}
    <li>
        <h1>{{ item.title }}
        <img src="{{ item.link|e }}" target="_blank">

    </li>
{% endfor %}

一切正常。但是我想打印两个键都带有值的元素。例如,如果我有

[
  'title' => '',
  'link' => 'mylink'
]

我不想打印这个。如果链接为空,我也不要。如果两者都为空-相同。我只想在两个键都有值的情况下打印它。那么,我该怎么做?

2 个答案:

答案 0 :(得分:6)

也许你可以做这样的事情。

Twig甚至为此内置了一些功能:

<ul>
    {% for item in custom if item.title and item.link %}
        <li>{{ item.title }}</li>
    {% endfor %}
</ul>

我还没有测试过,但是我认为and语句中的if应该可以工作。

答案 1 :(得分:1)

您可以在模板中添加一个简单的测试:

{% for item in custom %}
  {% if item.title|length %}
      <li>
          <h1>{{ item.title}}
          <img src="{{ item.link|e }}" target="_blank">

      </li>
   {% endif %}
{% endfor %}

通常来说,“ 0” | trim 表达式的计算结果为false。