web-dev-qa-db-ja.com

フィールドが空でないことを確認する

ノードテンプレートでフィールドが空かどうかを確認する最適な方法は何ですか。

Node--example.html.twigでは、「content」変数を使用できます。

ブロックをチェックするようなチェックは使用できません

{% if content.field_example  %}

私はこのようなものを使うことができます:

{% if content.field_example['#object'] is defined  %}

しかし、最良の方法は何ですか?

16
sainf

私も ノードテンプレートのエンティティ参照からフィールドをレンダリングするにはどうすればよいですか?[Drupal 8] と同様に、コンテンツは表示用に準備されたデータを含むレンダリング配列です。

何かをチェックまたは比較する場合は、代わりにノードオブジェクトで使用可能な値を使用してください。

{% if node.field_example.value %}

プロパティはフィールドタイプに依存することに注意してください。参照フィールドの場合は、代わりにtarget_idを使用する必要があります。参照されている質問は、一般的なフィールドタイプとそのプロパティをリストするエンティティフィールドAPIチートシートにリンクしています。

22
Berdir

コンテンツ内のレンダー配列の構造について確信が持てないため、これは最善の方法ではない可能性があります。

これはより良い解決策かもしれません:

{% if content.field_example|render|striptags|trim %}
  <p>field is not empty</p>
{% endif %}

これにより、フィールドをレンダリングすると出力が生成されるかどうかがチェックされます。

しかし、これは、フィールド形式をどのように構成したか、および何をしようとしたかによって異なります。たとえば、フィールドが空の場合にラベルを表示するように設定できます。次に、これを調整する必要があります。レンダリングされた出力に依存せず、チェックするだけの場合は、フィールドにデータベース内の値があるかどうか、ノードオブジェクトを使用します。 Berdirの回答を参照してください。

13
4k4

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 %} 
4
Alberto Galvis
{% 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_xxxparagraph.field_xxxparagraph.html.twigテンプレートファイル

2
Hudri