Twig - распечатать массив без пустых значений - PullRequest
1 голос
/ 08 марта 2019

У меня есть массив, построенный следующим образом

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 ]

5 голосов
/ 08 марта 2019

Вы могли бы сделать что-то подобное, может быть.

Twig даже имеет небольшую встроенную функциональность для этого:

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

Я не проверял это, но я предполагаю, что and в операторе if должно работать.

0 голосов
/ 08 марта 2019

Вы можете просто добавить в свой шаблон простой тест:

{% 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...