web-dev-qa-db-fra.com

Le HTML ne s'affiche pas, les balises HTML sont en cours d'impression

J'ai ajouté un modèle de vue views-view-fields--nieuws--page.html.twig à mon thème.

Le modèle est correct, lorsque je le modifie, je vois les résultats sur mon site Web.

{% for field in fields %}
  {{ field.separator }}
  {{ field.wrapper_prefix }}
    {{ field.label_html }}
    {{ field.content }}
  {{ field.wrapper_suffix }}
{% endfor %}

Dans page.html.twig J'imprime la région comme ceci:

{{ page.content }}

Mais ma sortie contient des balises HTML, une idée de comment résoudre ce problème?

EDIT: Il semble que mon HTML soit rendu via Twig

{% set hello = '<strong>Hello</strong>' %}
{{ hello }}

sort le <strong> tags également.

6
Yassin Tahtah

Il s'agit actuellement d'un bogue connu avec le modèle views-view-fields.html.twig: https://www.drupal.org/node/236342

2
Cottser

Vous devez décompresser HTML. Il existe deux méthodes de travail pour y parvenir. D'abord, vous pouvez marquer votre champ comme "brut" et le html s'affichera correctement. {{ your_field | raw }} devrait être correct.

En deuxième recours, vous pouvez utiliser la fonctionnalité d'évasion automatique de twig:

{% autoescape false %}
{{ your_field }}
{% endautoescape %}

De cette façon, vous dites à twig de ne pas échapper au balisage html.

1
salihcenap

Aucune des solutions ci-dessus n'a fonctionné dans mon cas. Voici comment je l'ai résolu en codant

function mytheme_preprocess_views_view_field(&$variables) {
  if ($variables['view']->id() == 'my_viewname' && $variables['field']->field == 'field_description') {
    $output = $variables['field']->getValue($variables['row']);
    $variables['output'] = ['#markup'=> $output];
  }
}

Dans views-view-fields - my-viewname.html.twig il suffit d'imprimer la valeur. Pas besoin d'autoscaping ou de filer brut

{{ fields.field_description.content }}
0
Md Eqbal Ahmad