web-dev-qa-db-ja.com

drupal 8でフィールドが空かどうかをどのように確認しますか?

基本ページのコンテンツタイプにフィールドを追加しました。これは選択ボックスであり、ページが「はじめに」の種類であるかどうかに応じて、オンまたはオフになります。ページが開始ページである場合、つまりチェックボックスがオンになっている場合は、クラス 'getting-started'をhtmlのbody要素に追加したいと思います。 .themeファイルでこれを実行したいと思います。したがって、基本的に、フィールドが空であるかどうか、およびクラスがbody要素に追加されていないかどうかも確認したいと思います。どんな助けでも大歓迎です。

6
ljolz

フィールドが空かどうかを確認するには、組み込みメソッドisEmpty()を使用できます。

例えば。:

if (!$entity->get('category')->isEmpty()) {
  /** @var EntityInterface $category */
  $category = $entity->get('category')->entity;
  $row['category']['data'] = [
    '#type' => 'link',
    '#title' => $category->get('name')->value,
    '#url' => $category->toUrl(),
  ];
}
else {
  $row['category'] = NULL;
}
15
Onkeltem

次の方法で、TWIGテンプレートでフィールドが空かどうかを確認できます。

{% if node.field_date.value %}
  <div class="my-field-wrapper">
    {{ content.field_date }}
  </div>
{% endif %}

または

{% if node.field_date.value is not empty %}
  {{ content.field_date }}
{% endif %}
3
manikandan k

この解決策は私のために働いた、field_posterの値はないか最大1です。

{% if content.field_poster[0] is not empty %}
1
illutek

Template_preprocess_node( https://api.drupal.org/api/drupal/core%21modules%21node%21node.module/function/template_preprocess_node/8 )関数を使用して、使用可能な変数を選択できます。ロードされているノードの。

この関数では、次のようにノードのフィールドにアクセスできます。

$variables['content']['field_some_name']

チェックに合格した場合、twigテンプレートで使用するカスタム変数を追加できます:

$variables['something'] = true;

または:ノードtwigテンプレートでフィールドの値を直接確認します。問題は、目的のクラスをbody要素に追加する必要があるかどうかです。おそらくそれを記事に追加します。ノードのタグがその役割を果たします。少なくとも確認が簡単です。

本当にbody要素に追加する必要がある場合は、template_preprocess_page関数を使用して、ロードされているページがノードであるかどうかを最初に確認してから、どのノードなどを見つける必要があると思います。

0
Frank Drebin