myfield est un champ de texte brut. {{ content.field_myfield }}
rend le champ avec le balisage HTML et l'étiquette de champ.
Comment rendre la valeur brute du champ? {{ content.field_myfield.value }}
ne fonctionne pas.
{{ entity.field_name.value }}
pour obtenir la vraie valeur brute, inclut les balises et l'encodage.
{{ node.body.value }}
<p>Batman & Robin</p>
{{ content.field_name.0 }}
pour obtenir la valeur brute moins les balises et l'encodage.
{{ content.body.0 }}
Batman & Robin
brut
Ce filtre doit être évité autant que possible, en particulier si vous générez des données qui pourraient être saisies par l'utilisateur. Voir cette page pour plus d'informations sur l'échappement automatique dans Drupal 8.
source: Filtres - Modification des variables dans Twig Templates
Le filtre brut marque la valeur comme "sûre", ce qui signifie que dans un environnement avec l'échappement automatique activé, cette variable ne sera pas échappée si raw est le dernier filtre appliqué
source: documents officiels de Twig
Par exemple, vous pouvez utiliser:
{{ node.body.value|striptags }}
{{ paragraph.field_text.value|striptags }}
Le problème avec l'utilisation de twig ( | striptags est le double encodage des entités html, pas le balisage, donc
&
devient&
et alors&amp;
- Berdir
Vous pouvez utiliser le module Twig Field Value dans ce cas. Après avoir installé ce module, vous aurez accès à des données partielles à partir de tableaux de rendu de champ. Par exemple.
{{ content.field_name|field_value }}
content.field_image|field_target_entity.uri.value
etc. Plus d'infos sur la page des projets
{{ content.body | raw }}
obtenir la valeur du champ brut dans un modèle twig
Dans le cas où cela aiderait quelqu'un, je voulais seulement afficher l'année de début d'un champ de plage de date et heure, au lieu des deux parties de la plage, dans un champ Twig template.
J'ai donc fini par remplacer le modèle de champ habituel par ceci:
{% if label_hidden %}
{% if multiple %}
<div{{ attributes.addClass(classes, 'field--items') }}>
{% for key, item in items %}
<h3{{ item.attributes.addClass('field--item') }}>{{ element['#items'][key].value|date('Y') }}</h3>
{% endfor %}
</div>
{% else %}
{% for key, item in items %}
<h3{{ attributes.addClass(classes, 'field--item') }}>{{ element['#items'][key].value|date('Y') }}</h3>
{% endfor %}
{% endif %}
{% else %}
<div{{ attributes.addClass(classes) }}>
<div{{ title_attributes.addClass(title_classes) }}>{{ label }}</div>
{% if multiple %}
<div class="field--items">
{% endif %}
{% for key, item in items %}
<h3{{ item.attributes.addClass('field--item') }}>{{ element['#items'][key].value|date('Y') }}</h3>
{% endfor %}
{% if multiple %}
</div>
{% endif %}
</div>
{% endif %}