drupal 8 get taxonomy term value in node

后端 未结 6 963
既然无缘
既然无缘 2021-02-08 05:36

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

相关标签:
6条回答
  • 2021-02-08 05:57

    You can also use some methods from EntityReferenceFieldItemList: Gets the entities referenced by this field, preserving field item deltas:

    $node->get('field_destination')->referencedEntities();
    

    Hope it will be useful for you

    0 讨论(0)
  • 2021-02-08 05:58

    Do this

    use Drupal\taxonomy\Entity\Term;
    $term = Term::load($node->get('field_destination')->target_id);
    $termname = $term->getName();
    

    In drupal8 we used to follow oops approach to get the values.

    0 讨论(0)
  • 2021-02-08 06:04

    entity property can be accessed directly from any reference type field.

    $node = 'myNode';
    $termEntity = $node->get('field_taxonomy_reference')->entity;
    if ($termEntity instanceof TermInterface) {
      $termLabel = $termEntity->label();
    }
    
    0 讨论(0)
  • 2021-02-08 06:12

    To build on VJamie's answer.

    You will need to either set a use statement at the top of your script;

    use Drupal\taxonomy\Entity\Term;
    

    Or, prefix the class instance with the namespace;

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

    That will get rid of the fatals.

    0 讨论(0)
  • 2021-02-08 06:13

    This is the correct way on how to achieve it

    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;
        }
    }
    
    0 讨论(0)
  • 2021-02-08 06:23

    The following code will get you the term object you need.

    $term = Term::load($node->get('field_destination')->target_id);
    

    If you need the name of that term you can do the following

    $name = $term->getName();
    

    Hope this helps out!

    0 讨论(0)
提交回复
热议问题