Как получить значение поля сущности мультимедиа в ветке?
Иногда необходимо получить фактическое значение поля (не отформатированное/отрисованное), например, чтобы проверить логическое значение для true
или false
.
Если я хочу получить значение поля узла или абзаца внутри шаблонов веток (node.html.twig / paragraph.html.twig) Я могу использовать node.field_my_boolean.value
соответственно paragraph.field_my_boolean.value
.
Как мне сделать это в шаблоне ветки мультимедиа? Я уже пробовал media.field_my_boolean.value
, но это не так работа.
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.
в своем шаблоне ветки и любым связанным с ним полям, таким как абзац или узел.
Вы можете использовать {{ 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 %}