Drupal \ node \ Entity \ Node Object ( [in_preview] => [values:protected] =>排列 ( [vid] =>排列 ( [x-default] => 1 )
[langcode] => Array
(
[x-default] => en
)
[field_destination] => Array
(
[x-default] => Array
(
[0] => Array
(
[target_id] => 2
)
)
)
无法直接获取field_destination值。它是与内容类型相关的分类术语。任何有用的帮助。
答案 0 :(得分:17)
以VJamie's答案为基础。
您需要在脚本顶部设置一个use语句;
use Drupal\taxonomy\Entity\Term;
或者,在类实例前加上命名空间;
$term = \Drupal\taxonomy\Entity\Term::load($node->get('field_destination')->target_id);
那将摆脱致命。
答案 1 :(得分:9)
您还可以使用EntityReferenceFieldItemList中的一些方法: 获取此字段引用的实体,保留字段项目增量:
$node->get('field_destination')->referencedEntities();
希望它对你有用
答案 2 :(得分:8)
以下代码将为您提供所需的术语对象。
$term = Term::load($node->get('field_destination')->target_id);
如果您需要该术语的名称,可以执行以下操作
$name = $term->getName();
希望这会有所帮助!
答案 3 :(得分:0)
这是实现它的正确方法
use Drupal\taxonomy\Entity\Term;
function modulename_node_presave(Drupal\Core\Entity\EntityInterface $entity) {
switch ($entity->bundle()) {
case 'programs':
$term = Term::load($entity->get('field_program_names')->target_id);
$name = $term->getName();
$entity->setTitle($name);
break;
}
}
答案 4 :(得分:0)
entity
属性。
$node = 'myNode';
$termEntity = $node->get('field_taxonomy_reference')->entity;
if ($termEntity instanceof TermInterface) {
$termLabel = $termEntity->label();
}
答案 5 :(得分:0)
这样做
use Drupal\taxonomy\Entity\Term;
$term = Term::load($node->get('field_destination')->target_id);
$termname = $term->getName();
在drupal8中,我们曾经使用oops方法来获取值。