web-dev-qa-db-fra.com

Existe-t-il des alternatives pour le filtre striptags?

Lors de l'impression d'un champ de texte, nous voulons simplement afficher la valeur. Lorsqu'il est imprimé tel quel dans un modèle twig ({{ content.field_subtitle }}) nous obtenons la sortie suivante.

Actuellement, nous essayons de ne pas utiliser le |raw filtre donc nous utilisons simplement {{ content.field_subtitle|render|striptags }}.

Existe-t-il des alternatives à cette approche sans avoir à créer un autre modèle twig pour le champ? Nous avons du mal à trouver une alternative.

Installer:

  1. Le type de contenu de page de base a le champ field_subtitle où type est text (plain)
  2. non twig a été créé sur le terrain, seul le type de contenu node--page.html.twig

Configuration actuelle dans le modèle twig

<div class="myclass__subtitle>
  {{ content.field_subtitle|render|striptags }}
</div>

Sortie courant:

<div class="myclass__subtitle">    
  <div class="field field--name-field-subtitle field--type-string field--label-hidden field__item">Intrinsicly harness interactive functionalities.</div>
</div>

Sortie désirée:

<div class="myclass__subtitle">    
  Intrinsicly harness interactive functionalities
</div>
3
usernameabc

Je suis farouchement contre des choses comme render-array|render|striptags etc. Cela semble très peu naturel et non Drupal. Ce que vous devez faire est de créer un modèle de champ sans balisage.

Par exemple, soit dans field.html.twig qui affecterait tous les champs, ou dans field--field-name.html.twig ou des variantes plus spécifiques, vous pouvez le faire:

{#
/**
* @file
* Theme override to remove all field markup.
*/
#}

{% spaceless %}
{% for item in items %}
  {{ item.content }}
{% endfor %}
{% endspaceless %}

Cela rendra toujours ce champ sans balisage.

3
Kevin

Pour un champ à valeur unique, je fais souvent ceci: {{ content.field_subtitle.0 }}. Cela n'imprime que le premier delta, y compris le balisage que le champ lui-même inclut (par exemple, fonctionne bien également sur les champs de référence ou d'autres choses plus complexes) mais n'utilise pas du tout le modèle de champ.

2
Berdir