web-dev-qa-db-ja.com

Drupal 8)でノードID(nid)の代わりにtidを取得する方法

私は_Drupal 8_の新人です。 category (taxonomy)でノードを作成しました。 tidを使用してnidを取得する方法がわかりません。私は_$node->body->value_を使用して本文フィールドの値を取得し、_{{ body }}_を使用しています。しかし、_$node->field_category->value_を使用する場合にカテゴリIDを取得するには、デバッグモードでNullを表示します。

_function THEME_preprocess_node(&$variables) {
  $node = \Drupal::routeMatch()->getParameter('node');
  $variables['body'] = $node->body->value;    // Working fine
  $cat_id = $node->field_category->value;    // Its showing null
  kint($cat_id);
}
_

では、ノードのcategory id (tid)を取得するにはどうすればよいですか?

1
Mash

参照フィールドには、プロパティvalueがありません。 entityを使用して用語をロードするか、target_id用語IDを取得するには:

$tid = $node->field_tags->target_id;
2
4k4

次のようにアイテムをループできます:

foreach ($node->field_category as $item) {
  $tids[] = $item->target_id;
}

または、次のようなエンティティを取得します。

$terms = $node->get('field_category')->referencedEntities();
0
rémy