web-dev-qa-db-ja.com

twigテンプレートで未加工のフィールド値を取得するにはどうすればよいですか?

myfieldはプレーンテキストフィールドです。 {{ content.field_myfield }}は、HTMLマークアップとフィールドラベルを使用してフィールドをレンダリングします。

フィールドの生の値をどのようにレンダリングしますか? {{ content.field_myfield.value }}は機能しません。

28
Pim

{{ entity.field_name.value }}は、タグとエンコーディングを含み、真の生の値を取得します。

  • 例:{{ node.body.value }}
  • 結果:<p>Batman &amp; Robin</p>

{{ content.field_name.0 }}は、タグとエンコーディングを除いた未加工の値を取得します。

  • 例:{{ content.body.0 }}
  • 結果:Batman & Robin

raw

特にユーザーが入力する可能性のあるデータを出力する場合は、このフィルターをできる限り避けてください。 Drupal 8.の自動エスケープの詳細については このページ を参照してください。

ソース: フィルター-Twigテンプレート の変数の変更

Rawフィルターは値を「安全」としてマークします。つまり、自動エスケープが有効になっている環境では、この変数はエスケープされません。最後に適用されたフィルター

ソース: Twigの公式ドキュメント




たとえば、次のように使用できます。

{{ node.body.value|striptags }}
{{ paragraph.field_text.value|striptags }}

小枝| striptagsの使用に関する問題は、マークアップではなくhtmlエンティティの二重エンコードであるため、&&amp;になり、次に&amp;amp; – Berdir

47
No Sssweat

この場合、 Twig Field Value モジュールを使用できます。このモジュールをインストールした後、フィールドレンダー配列から部分データにアクセスできます。例のために。

{{ content.field_name|field_value }}
content.field_image|field_target_entity.uri.value

etc.プロジェクトページの詳細

5
Andrew Kozoriz
{{ content.body | raw }} 

twigテンプレートで生のフィールド値を取得する

2
Wasim Khan

これがだれにも役立つ場合は、フィールドTwigテンプレート内で、範囲の両方の部分ではなく、日時範囲フィールドの開始年のみを表示したいと思っていました。

だから私はこれで通常のフィールドテンプレートを上書きすることになりました:

{% 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 %}
0
Dave Nattriss