D8 Как извлечь значение настраиваемого поля из словаря для поля - entity-reference.html.twig? - PullRequest
0 голосов
/ 01 мая 2018

Моя цель состоит в том, чтобы раскрасить термины словаря кода на основе field_topic_colour, который я добавил в словарь. Есть другие словари, в которых нет этого поля. Итак, мне нужно проверить, существует ли он для определенного термина, а затем извлечь значение, чтобы я мог создать свои классы и получить кнопки нужного цвета.

С помощью kint я вижу значение, но не могу понять, как развернуть его в ветке или с помощью предварительной обработки. Все найденные мной вопросы касаются терминов вокаба в узлах, а не в самих терминах.

Вот мой снимок экрана: enter image description here

Я пытаюсь перейти к «первичному» (это ключевое слово, указывающее моей подтеме Bootstrap, какой цвет использовать) в field_topic_colour.

Что именно я должен написать в функции предварительной обработки?

function MYTHEME_preprocess_field__entity_reference($variable) {
  //I need code to return a string like this (I think) where "primary"
  //is the value from my custom field in the term.
  $color = ????? (primary)
  $mytag = 'class="btn- . $color . ">TERM-NAME...TERM_URL...
}

Я могу почистить php самостоятельно, не заботясь об этом в приведенном выше примере. Мне просто нужно получить значение для моего поля ...

Я проверил таблицы здесь: https://wizzlern.nl/sites/wizzlern.nl/files/artikel/drupal-content-entity-8.0.pdf но, похоже, мне действительно нужны некоторые конкретные примеры и ОБЪЯСНЕНИЯ о том, почему что-то работает, поэтому я надеюсь, что в следующий раз я начну логически разбираться с этим.

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Добавление ответа сейчас. Мой окончательный код в поле - файл entity-reference.html.twig:

{% for item in items %}
  {% set mylabel %}
    {{ item.content }}
  {% endset %}
  {% set myclass %}
    {{ item.content['#options'].entity.vid.0.value['target_id'] }}
  {% endset %}
  {% set myclass = myclass|replace({'_':'-'}) %}
    <div{{ item.attributes.addClass('taxonomy--item') }}>
      <a class="btn-small btn-primary tag-{{ myclass|trim }}" href="{{ item.content['#url'] }}" role="button">{{ mylabel|striptags }}</a>
    </div>
{% endfor %}

ЗДЕСЬ - код, необходимый узлу для доступа к родительскому словарю терминов таксономии в узле. (То есть отдельные теги на узле типа контента).

item.content['#options'].entity.vid.0.value['target_id']

ПРИМЕЧАНИЕ. Это на Drupal 8.5.3, и ни у одного из моих "тегов" нет более одного родителя.

0 голосов
/ 02 мая 2018

Вы можете получить доступ к переменным, как это $term->field_topic_colour->value Поскольку он находится в массиве, он должен быть доступен, как это $term->field_topic_colour[0]->value

function MYTHEME_preprocess_field__entity_reference($variable) {
  $term = \Drupal::routeMatch()->getParameter('taxonomy_term');
  $color = NULL;
  if(isset($term->field_topic_colour[0]->value) {
    $color = $term->field_topic_colour[0]->value;
  }
  $mytag = 'class="btn- . $color . ">TERM-NAME...TERM_URL...
}
...