次のようなカスタムコンテンツタイプのリストフィールドがあります。
フィールドマシン名は:field_app_os
key|label
Win|Windows
Android|Android
Twigテンプレートでkey
にアクセスするには、content.field_app_os
または Twig Field Value で、両方の出力はAndroid
です。
Twig Field Valueは、Drupal 8 themersがフィールドレンダーアレイから部分的なデータを取得することを可能にします。レンダーアレイに深くドリルしたり、プリプロセス関数を使用したりせずに、出力をより詳細に制御できます。
フィルター:
-field_label:フィールドラベルの値を返します。
-field_value:フィールドラッパーなしでフィールド値のレンダー配列を返します。
/* with use of Twig Field Value module */
{{ content.field_app_os|field_value }} {# outputs 'Android' #}
/* without use of Twig Field Value module */
{{ content.field_app_os }} {# outputs 'Android' #}
ただし、単純な比較を行うと、両方の出力はFalseになります。
{% set app_os = content.field_app_os|field_value %}
{{ kint(app_os == 'Android') }} {# outputs 'bool FALSE' #}
または私が使用するとき:
{% set app_os = content.field_app_os %}
{{ kint(app_os == 'Android') }} {# outputs 'bool FALSE' #}
私のコードの何が問題になっていますか?
{{content}}はレンダー配列です。ここにキー/ラベルペアのラベルがあります。
{{ content.field_app_os[0]['#markup'] }}
しかし、これはロジックにとって理想的ではありません。
したがって、データベースの値は次の場所で使用する方が適切です。
{{ node.field_app_os.value }}
これは、キーとラベルのペアの最初の部分であり、変換できません。ビューモードでのフィールドの構成方法に関係なく、値にアクセスできます。