ノードテンプレートのフィールドが空かどうかを確認する最良の方法は何ですか。
node--example.html.twigでは、「content」変数を使用できます。
ブロックをチェックするようなチェックは使用できません
{% if content.field_example %}
私はこのようなものを使用できます:
{% if content.field_example['#object'] is defined %}
しかし、最善の方法は何ですか?
ノードテンプレートのフィールドが空かどうかを確認する最良の方法は何ですか。
node--example.html.twigでは、「content」変数を使用できます。
ブロックをチェックするようなチェックは使用できません
{% if content.field_example %}
私はこのようなものを使用できます:
{% if content.field_example['#object'] is defined %}
しかし、最善の方法は何ですか?
回答:
ノードテンプレートでエンティティ参照からフィールドをレンダリングするにはどうすればいいですか?[Drupal 8]、コンテンツは表示用に準備されたデータを含むレンダー配列です。
何かを確認または比較する場合は、代わりにノードオブジェクトで使用可能な値を使用します。
{% if node.field_example.value %}
。
プロパティはフィールドタイプに依存することに注意してください。参照フィールドの場合、代わりにtarget_idを使用する必要があります。参照されている質問は、一般的なフィールドタイプとそのプロパティをリストするエンティティフィールドAPIチートシートにリンクしています。
コンテンツ内のレンダー配列の構造がわからないため、これは最善の方法ではありません。
これはより良い解決策かもしれません:
{% if content.field_example|render|striptags|trim %}
<p>field is not empty</p>
{% endif %}
これにより、フィールドのレンダリングで出力が生成されるかどうかがチェックされます。
しかし、これは、フィールド形式の設定方法と、何をしようとしているかによって異なります。たとえば、フィールドが空の場合にラベルを表示するように構成できます。次に、これを調整する必要があります。レンダリングされた出力に依存せず、チェックするだけの場合、データベースにフィールドの値がある場合は、ノードオブジェクトを使用します。Berdirの回答を参照してください。
|render
フィールドテンプレートからランダム空白の問題のために十分ではありません、このリンクを参照してください:小枝テンプレートで空のフィールドのチェックを複雑化される
Twigテンプレート(Field Collection)
テンプレートでフィールドが空でないかどうかを確認します:field-collection-item--field-services.html.twig
「| field_value」に続いて「is not empty」 を使用して値を取得するために、Field Twig Valueモジュールをインストールします
{% if content.field_work|field_value is not empty %}
...
{% endif %}
{% if not (node.field_whatever.isEmpty == true) and content.field_whatever is defined %}
<div class="whatever_markup">
{{ content.field_whatever }}
</div>
{% endif %}
このソリューションは非常に防弾であり、再利用および/または共有テンプレート(たとえば、node--teaser.html.twig
複数のバンドル間で共有)でも動作します。
ダブルネガティブnot ...isEmpty == true
が必要です。そうでない場合、存在しないフィールドはチェックに失敗します。また、私のソリューションは、フィールドのレンダリングを伴うチェックよりもはるかに速く、エラーに対して回復力があると考えています。
これは、あなたは、単に置き換えることができ、たとえば、任意のエンティティテンプレートのために働く必要node.field_xxx
とparagraph.field_xxx
してparagraph.html.twig
テンプレートファイル