Как получить необработанное значение поля в шаблоне ветки?


27

myfield - это текстовое поле. {{ content.field_myfield }}визуализирует поле с разметкой HTML и меткой поля.

Как отобразить необработанное значение поля? {{ content.field_myfield.value }}не работает

Ответы:


45

{{ entity.field_name.value }} чтобы получить истинное необработанное значение, включает теги и кодировку.

  • Пример: {{ node.body.value }}
  • результат: <p>Batman &amp; Robin</p>

{{ content.field_name.0 }} чтобы получить необработанное значение минус теги и кодирование.

  • Пример: {{ content.body.0 }}
  • результат: Batman & Robin

сырье

По возможности следует избегать этого фильтра, особенно если вы выводите данные, которые могут быть введены пользователем. Смотрите эту страницу для получения дополнительной информации об автопробеге в Drupal 8.

source: Filters - Изменение переменных в шаблонах Twig

Необработанный фильтр помечает значение как «безопасное», что означает, что в среде с включенным автоматическим экранированием эта переменная не будет экранирована, если raw является последним фильтром, примененным к нему

источник: официальные документы Twig


Например, вы можете использовать:

{{ node.body.value|striptags }}
{{ paragraph.field_text.value|striptags }}

Проблема использования twig's striptags заключается в двойном кодировании html-сущностей, а не разметки, поэтому & становится &, а затем & amp; - Бердир


6
примеры содержания не верны. См. Drupal.stackexchange.com/questions/198694/… . То, что вы можете использовать, это content.field_text.0, тогда вы получите только внутреннюю часть первого элемента поля без шаблонов полей. Это особенно полезно для списков, ссылок и т. Д., Где
требуется

2
Лучше, но все же не совсем правильно. content.field_myfield | striptags не работает, вы не можете передать массив рендеринга этому. Вам нужно будет сначала сделать это, а затем пропустить через это. Стрип-теги и т. д. также имеют проблемы с символами & и другими символами, которые могут быть закодированы дважды, поэтому на самом деле вам часто нужен | striptags | raw.
Бердир

2
Просто | raw оставляет HTML-теги и печатает их. Тогда проблема с | striptags заключается в двойном кодировании html-сущностей, а не в разметке, поэтому & становится & amp; а затем & amp;
Бердир

2
Это не двойной выход, вы можете видеть это <и >отображаются правильно. Амперсанд, вероятно, уже один раз сбежал, прежде чем вывести его. Но вопрос касается простого текстового поля , а не отформатированного текстового поля, обработанного текстовыми фильтрами. (Чтобы ответить на этот не заданный вопрос, необработанное значение (если кто-то действительно этого хочет) все еще будет в нем, .valueи оно будет корректно исключено из Twig по соображениям безопасности, потому что вы никогда не должны выводить отформатированное текстовое поле без
фильтра

2
Да, это то, что я имел в виду (авто-экранирование = одиночное экранирование). Таким образом, ваши примеры для вывода значений полей сущности идеальны, только без стрип-фильтра, потому что это приведет к ужасному выходу с двойным экранированием. (Кстати, &amp;вывод в вашем примере неправильный, это не происходит в автоэкранировании, если только содержимое поля не экранировано один раз).
4k4

5

В этом случае вы можете использовать модуль Twig Field Value . После установки этого модуля вы получите доступ к частичным данным из массивов рендеринга полей. Например

{{ content.field_name|field_value }}
content.field_image|field_target_entity.uri.value

и т.д. Подробнее на странице проектов


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.