Доступ к вложенным значениям из данных YAML в шаблоне Twig - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь получить доступ к вложенным данным YML в шаблоне Twig. Мои данные YML структурированы так:

card_default:
  card_title: 'Card Title'
  card_header: 'This is the card header on a multi-part card'
  card_text: "Some quick example text to build on the card title and make up the bulk of the card's content."
  card_link: 'https://github.com/phase2/particle'
  card_background: primary
  card_image_location: top
  card_footer: "This is the card footer"
  text_color: uk-dark
  card_body: "This is some card body text"
  card_style: default
card_image:
  card_more_stuff in here....

... и затем я вызываю некоторые данные в шаблоне Twig следующим образом:

 {% include '@molecules/card/_card.twig' with {
          card_default: {
              card_title: card_title,
              card_text: card_text,
              card_background: 'primary',
              card_link: card_link,
              card_link_text: card_link_text,
              card_link_class: card_link_class,
          }
      } only %}

Но это, похоже, не работает. Я чувствую, что то, как я пытаюсь это сделать, не совсем правильно, но поиск не дал мне больше понимания. По сути, я хочу получить доступ к значениям в card_default.

Я могу видеть все данные в массиве, если я дам дамп с {{ dump(card_default) }}

array(14) { ["card_title"]=> string(10) "Card Title" ["card_header"]=> string(44) "This is the card header on a multi-part card" ["card_text"]=> string(94) "Some quick example text to build on the card title and make up the bulk of the card's content." ["card_link"]=> string(34) "https://github.com/phase2/particle" ["card_link_text"]=> string(9) "Read more" ["card_link_class"]=> string(27) "uk-button uk-button-default" ["card_background"]=> string(7) "primary" ["card_width"]=> int(25) ["card_image_location"]=> string(3) "top" ["card_footer"]=> string(23) "This is the card footer" ["list"]=> array(2) { ["list_flush"]=> bool(true) ["items"]=> array(3) { [0]=> array(1) { ["item_text"]=> string(15) "Cras justo odio" } [1]=> array(1) { ["item_text"]=> string(23) "Dapibus ac facilisis in" } [2]=> array(1) { ["item_text"]=> string(18) "Vestibulum at eros" } } } ["text_color"]=> string(7) "uk-dark" ["card_body"]=> string(27) "This is some card body text" ["card_style"]=> string(7) "default" } 

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Я понял это, мне просто нужно правильно отобразить вложенные элементы следующим образом:

  {% include '@molecules/card/_card.twig' with {
      card_title: card_default.card_title,
      card_text: card_default.card_text,
      card_background: 'primary',
      card_link: card_default.card_link,
      card_link_text: card_default.card_link_text,
      card_link_class: card_default.card_link_class,
  }  %}

В приведенном выше коде card_default отображается в переменной части массива, т.е. последвоеточиеcard_link: card_default.card_link,

0 голосов
/ 14 ноября 2018

Данные находятся в переменной card_default, поэтому она должна быть, например, card_default.card_title
но вместо создания нового объекта вы можете сделать это двумя способами:

YAML

foo:
    bar: 'foobar'
    number: 42

main.twig

{% include "full.twig" with { 'foo' : foo } only %}
{% include "slim.twig" with foo only %}

full.twig

{{ foo.bar }}

slim.twig

{{ number }}
...