ノードテンプレートでフィールドが空かどうかを確認する最適な方法は何ですか。
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の回答を参照してください。
Twig templating(Field Collection)でフィールドが空でないかどうかを確認します
テンプレート:field-collection-item--field-services.html.twig
インストール Field Twig Value Module を使用して、「| field_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 %}
このソリューションは完全に防弾であり、reusealbeや共有テンプレート(例:共有node--teaser.html.twig
複数のバンドルをまたいで)
二重否定not ...isEmpty == true
が必要です。それ以外の場合、存在しないフィールドはチェックに失敗します。また、私のソリューションは、フィールドのレンダリングを伴うすべてのチェックよりもはるかに速く、エラーに対して回復力があると信じています。
これは、任意のエンティティテンプレートで機能するはずです。あなたは単にnode.field_xxx
とparagraph.field_xxx
のparagraph.html.twig
テンプレートファイル