2016-05-09 12 views
5

Drupal \ nodo \ Entity \ Node Object ( [in_preview] => [valori: protected] => Array ( [vid] => Array ( [x -default] => 1 )Drupal 8 get valore termine tassonomia nel nodo

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

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

        ) 

      ) 

Non in grado di ottenere direttamente il valore field_destination. E 'un termine tassonomia allegato con il tipo di contenuto. Qualsiasi aiuto appriciated.

risposta

6

il seguente codice otterrà yo tu il termine oggetto di cui hai bisogno.

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

Se è necessario il nome di quel termine è possibile effettuare le seguenti operazioni

$name = $term->getName(); 

Spero che questo aiuta!

+0

Come mai Term :: carico causa di un problema.Errore non valido: Classe 'Drupal \ Rest \ Plugin \ Block \ Term' non trovata. – user32012

+0

Probabilmente stai importando la classe sbagliata. – VJamie

12

Per costruire su VJamie's risposta.

Sarà necessario impostare una dichiarazione di utilizzo nella parte superiore dello script;

use Drupal\taxonomy\Entity\Term; 

Oppure, aggiungere il prefisso all'istanza di classe con lo spazio dei nomi;

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

Questo eliminerà i fatali.

4

È inoltre possibile utilizzare alcuni metodi da EntityReferenceFieldItemList: ottiene i soggetti a cui fa riferimento questo campo, preservando delta voce campo:

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

Spero che sarà utile per voi

+0

Se non sbaglio, '$ node-> get ('field_destination') -> getEntity();' restituirà semplicemente '$ node' stesso. Il metodo 'referencedEntities()' è molto utile però. – marcvangend

+0

@marcvangend è corretto, [getEntity()] (https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Field%21FieldItemList.php/function/FieldItemList%3A%3AgetEntity/8.4. x) restituisce il campo padre, cioè il suo nodo. [referencedEntities()] (https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Field%21EntityReferenceFieldItemList.php/function/EntityReferenceFieldItemList%3A%3AreferencedEntities/8.4.x) è la risposta corretta . – Tim

+0

Grazie mille per le tue risposte. Rimuoverò getEntity() dalla mia risposta per evitare confusione. – wau

Problemi correlati