Прямое включение Twig не работает, только "с" определенными ключами

Я использую Pattern Lab с шаблонами веток и у меня возникают проблемы с использованием объектов непосредственно в with Заявление в том числе.

Это мое teaser-content-blocks организм:

{% set content_blocks = [
  {
    teaser_photo: {
      url: 'https://img.buzzfeed.com/buzzfeed-static/static/enhanced/terminal01/2011/3/29/17/enhanced-buzz-14894-1301433714-5.jpg',
      alt: 'Man sleeping on a cake',
      title: 'Man sleeping on a cake',
      height: '200px',
      width: '400px',
    },
  }
] %}

<div class="teaser-content-blocks">
  {% for content_block in content_blocks %}
    {% include '@molecules/teaser-content-block.twig' with content_block only %}
  {% endfor %}
</div>

Это teaser-photo атом:

<div class="teaser-photo">
  <img
    src="{{ url }}"
    alt="{{ alt }}"
    title="{{ title }}"
  />
</div>

И это то, что я пытаюсь сделать с teaser-content-block молекула:

<div class="teaser-content-block">
  <div class="left">
    {% include '@atoms/teaser-photo.twig' with teaser_photo only %}
  </div>
  <div class="right">
    {% include '@atoms/title.twig' with { title: 'Sleep on a cake', element: 'h3' } only %}
    {% include '@atoms/teaser-body.twig' with { body: "When we say 'sweet dreams', this isn't quite what we mean! Check this mad lad not understanding the general concept of pillows! This utter banterboy has completely confused what he is meant to use as a confectionary-based celebration of one's birth and a soft item of bedding designed to cushion the head during sleep or light rest. Mental!" } only %}
  </div>
</div>

Кажется, однако, что with teaser_photo only Это утверждение приводит к сбою и не компиляции ветки с ошибкой Catchable fatal error: Argument 1 passed to Twig_Template::display() must be of the type array, null given,

Если я изменю это заявление о включении на следующее:

{% include '@atoms/teaser-photo.twig' with { url: teaser_photo.url, alt: teaser_photo.alt, title: teaser_photo.title } only %}

... это работает хорошо, но это слишком многословно, на мой взгляд. Я бы предпочел просто передать объект как есть. Кажется, он просто не хочет правильно его подбирать, хотя теоретически он должен работать одинаково.

Я не эксперт по веткам, поэтому я могу упустить что-то действительно очевидное.

Любая помощь ценится как всегда!

1 ответ

Обнаружил проблему. Шаблон Lab, конечно, пытается отрисовать каждый доступный паттерн, поэтому он пытался отрисовать teaser-content-block.twig который пытается ссылаться на переменную teaser_photoчто, конечно, не существует в этой области. Таким образом, лекарство должно было заменить эту строку той, которая использует значение по умолчанию, например так:

{% include '@atoms/teaser-photo.twig' with teaser_photo|default({}) only %}

... или, по крайней мере, что-то подобное. Спасибо @DarkBee за то, что нашли время посмотреть.

Другие вопросы по тегам