drupal 8获取节点中的分类术语值

use*_*012 10 drupal-8

Drupal \node\Entity\Node Object([in_preview] => [values:protected] => Array([vid] => Array([x-default] => 1)

        [langcode] => Array
            (
                [x-default] => en
            )

        [field_destination] => Array
            (
                [x-default] => Array
                    (
                        [0] => Array
                            (
                                [target_id] => 2
                            )

                    )

            )
Run Code Online (Sandbox Code Playgroud)

无法直接获取field_destination值.它是与内容类型相关的分类术语.任何帮助appriciated.

Chr*_*ian 18

VJamie的答案为基础.

您需要在脚本的顶部设置一个use语句;

use Drupal\taxonomy\Entity\Term;
Run Code Online (Sandbox Code Playgroud)

或者,使用命名空间为类实例添加前缀;

$term = \Drupal\taxonomy\Entity\Term::load($node->get('field_destination')->target_id);
Run Code Online (Sandbox Code Playgroud)

这将摆脱致命.


wau*_*wau 11

您还可以使用EntityReferenceFieldItemList中的一些方法:获取此字段引用的实体,保留字段项增量:

$node->get('field_destination')->referencedEntities();
Run Code Online (Sandbox Code Playgroud)

希望它对你有用


小智 9

以下代码将为您提供所需的术语对象.

$term = Term::load($node->get('field_destination')->target_id);
Run Code Online (Sandbox Code Playgroud)

如果您需要该术语的名称,则可以执行以下操作

$name = $term->getName();
Run Code Online (Sandbox Code Playgroud)

希望这会有所帮助!