web-dev-qa-db-ja.com

HTMLがレンダリングされず、HTMLタグが印刷されている

ビューテンプレートviews-view-fields--nieuws--page.html.twigをテーマに追加しました。

テンプレートは正しいです。編集すると、自分のWebサイトに結果が表示されます。

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

page.html.twigでは、次のように領域を出力します。

{{ page.content }}

しかし、私の出力にはHTMLタグが含まれています。これを解決するにはどうすればよいですか?

編集:HTMLがTwigを介してまったくレンダリングされているようです

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

<strong>タグも出力します。

6
Yassin Tahtah

これは現在、views-view-fields.html.twigテンプレートの既知のバグです https://www.drupal.org/node/236342

2
Cottser

HTMLをアンエスケープする必要があります。これを実現するには2つの方法があります。まず、フィールドを「未加工」としてマークすると、HTMLが正しくレンダリングされます。 {{ your_field | raw }}は正常にレンダリングされるはずです。

2番目の手段として、twigの自動エスケープ機能を使用できます。

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

このようにして、HTMLマークアップをエスケープしないようにtwigに指示しています。

1
salihcenap

上記の解決策のどれも私の場合はうまくいきませんでした。ここで私がコーディングしてそれを解決した方法

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];
  }
}

Views-view-fields--my-viewname.html.twigでは、値を出力するだけです。自動スキャッピングやrawファイラーは不要

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