Comment supprimer les espaces blancs sur un champ dans une brindille?

9

J'essaie d'imprimer la valeur du champ dans un nœud - template.html.twig sans espace blanc. Ce champ est une sélection dans la page d'administration.

Location|Location 
Achat|Achat

Voici comment ma valeur est imprimée:

{{content.field_type}}

entrez la description de l'image ici

field.html.twig:

{% for item in items %}
{{- item.content -}}
{%  endfor %}

J'essaie un argument de brindille comme

{{content.field_type | trim}}

Mais quand j'imprime comme ça, c'est vide.

Alors, où sont ces espaces? même si j'essaie de tester la valeur dans la condition if else:

Cela ne fonctionne pas à cause des espaces:

{% if content.field_type == "Achat"%}

Ce travail :

{% if content.field_type | render | trim == "Achat"%}

Donc, pour tester une valeur, c'est ok, mais pour imprimer la valeur si j'utilise

{{content.field_type | render | trim}}

j'ai obtenu le même résultat avec un espace blanc.

Donc, si quelqu'un peut me dire où est ajouté cet espace et comment le supprimer dans une brindille. J'utilise le thème boostrap, mais je ne vois rien qui ajoute des espaces.

Kevin
la source
Avez-vous essayé d'utiliser spaceless? twig.sensiolabs.org/doc/2.x/tags/spaceless.html
Kevin
oui, même résultat
Kevin
1
De plus, vous ne voulez pas vérifier le tableau de rendu, faites-le sur le terrain lui-même vianode.field_type.value == 'Achat'
Kevin
D'accord pour le test, mais pour l'impression? pourquoi un espace?
Kevin
@Kevin à propos de votre commentaire s'il vous plaît: pourriez-vous développer un peu pourquoi / lors de la vérification de l'objet entité sur le tableau de rendu de contenu? par exemple profile.some_field vs content.some_field? mon modèle dit dans les commentaires: utilisez 'content' pour les imprimer tous, ou imprimez un sous-ensemble tel que 'content.title'. Tks :)
Kojo

Réponses:

5

Il me semble que vous avez un modèle, field.html.twigqui ajoute probablement cet espace. Vous pouvez activer le twigdébogage pour voir quels fichiers de modèles sont utilisés.

De plus, je pense qu'il vaut mieux tester la valeur au node.field.valuelieu de content.fieldcomme cela est fait pour le rendu uniquement.

Notez que les opérateurs de brindilles {% for ... %}ajoutent également des espaces, vous devriez donc également y ajouter -pour par exemple:

{%- for item in items %}
{{ item.content }}
{%  endfor -%}
yvan
la source
Le modèle utilisé est field.html.twig, je viens d'ajouter - dans {% - pour, mais c'est la même chose, des espaces toujours ici ... je suis d'accord pour tester la valeur à utiliser node.field.value.
Kevin
Que fait ce trait d'union? Et pourquoi ce comportement par défaut n'est-il pas?
leymannx
1
Ah! Modificateur de contrôle des espaces . Mon Dieu, c'est moche. Cela devrait vraiment être un défaut global.
leymannx
4

J'ai essayé plusieurs fois et le tag sans espace fonctionne plutôt bien.

Utilisez la syntaxe suivante:

{% spaceless %}

  {{content.field_type}}

{% endspaceless %}
Vipin Mittal
la source
3
j'ai encore des espaces
Kevin
Moi aussi, j'ai été profondément déçu.
Randell
Assez intéressant, cela a fonctionné pour moi pour un projet distinct.
Randell
peut-être que vous n'avez pas effacé le cache drupal?
Robbiegod