Как получить значение поля сущности мультимедиа в ветке?


Иногда необходимо получить фактическое значение поля (не отформатированное/отрисованное), например, чтобы проверить логическое значение для true или false.

Если я хочу получить значение поля узла или абзаца внутри шаблонов веток (node.html.twig / paragraph.html.twig) Я могу использовать node.field_my_boolean.value соответственно paragraph.field_my_boolean.value.

Как мне сделать это в шаблоне ветки мультимедиа? Я уже пробовал media.field_my_boolean.value, но это не так работа.

 3
Author: Philipp Michael, 2017-04-20

2 answers

Прямо сейчас медиа-модуль не передает свой объект в переменных, как это делают абзацы и узел. Вот почему media.field_my_boolean.value ничего не делает.

Вы можете исправить это в своей теме, реализовав theme_preprocess_media, который добавляет медиа-объект к переменным:

/**
 * Prepares variables for media templates.
 *
 * Default template: media.html.twig.
 *
 * @param array $variables
 *   An associative array containing:
 *   - media: An individual media for display.
 */
function mytheme_preprocess_media(&$variables) {
  $variables['media'] = $variables['elements']['#media'];
}

Затем вы можете получить доступ к media. в своем шаблоне ветки и любым связанным с ним полям, таким как абзац или узел.

 4
Author: Kevin, 2017-04-20 13:51:28

Вы можете использовать {{ content.field_my_boolean }}, и если вам нужно исходное значение без разметки HTML, используйте content.field_my_boolean.0

Оба выводят отображаемое значение, а не фактическое значение true/false. Я не могу использовать это, потому что оно переведено (например, "wahr"/"falsch" в Немецкий).

Затем используйте функцию |t и сделайте это

{% if content.field_my_boolean.0 == 'Wahr'|t %}
    // do something
{% elseif content.field_my_boolean.0 == 'Falsch'|t %}
    // do something
{% endif %}
 1
Author: No Sssweat, 2017-04-21 06:05:59