2016-05-09 14 views
5

Drupal \ nút \ Entity \ Node Object ( [in_preview] => [giá trị: protected] => Array ( [vid] => Array ( [x -default] => 1 )drupal 8 get giá trị hạn phân loại trong nút

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

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

        ) 

      ) 

Không thể nhận được giá trị field_destination trực tiếp. Đó là một thuật ngữ phân loại gắn liền với các loại nội dung. Bất kỳ sự giúp đỡ appriciated.

Trả lời

6

Đoạn mã dưới đây sẽ nhận được yo u đối tượng hạn bạn cần.

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

Nếu bạn cần tên của thuật ngữ mà bạn có thể làm như sau

$name = $term->getName(); 

Hope this helps ra!

+0

thế nào bao giờ Term :: tải gây ra một vấn đề.Nhập lỗi: Class 'Drupal \ rest \ Plugin \ Block \ Term' không tìm thấy. – user32012

+0

Có thể bạn đang nhập sai lớp. – VJamie

12

Để xây dựng trên VJamie's câu trả lời.

Bạn cần phải đặt tuyên bố sử dụng ở đầu tập lệnh;

use Drupal\taxonomy\Entity\Term; 

Hoặc, tiền tố lớp thể hiện với không gian tên;

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

Điều đó sẽ loại bỏ phần tử vong.

4

Bạn cũng có thể sử dụng một số phương pháp từ EntityReferenceFieldItemList: Gets các đối tượng được tham chiếu bởi lĩnh vực này, việc bảo tồn đồng bằng châu thổ mục lĩnh vực:

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

Hy vọng nó sẽ hữu ích cho bạn

+0

Nếu tôi không nhầm, '$ node-> get ('field_destination') -> getEntity();' sẽ đơn giản trả về '$ node'. Phương thức 'referencedEntities()' rất hữu dụng. – marcvangend

+0

@marcvangend là chính xác, [getEntity()] (https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Field%21FieldItemList.php/function/FieldItemList%3A%3AgetEntity/8.4. x) trả về trường gốc, tức là nút của nó. [referencedEntities()] (https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Field%21EntityReferenceFieldItemList.php/function/EntityReferenceFieldItemList%3A%3AreferencedEntities/8.4.x) là câu trả lời đúng . – Tim

+0

Cảm ơn rất nhiều câu trả lời của bạn. Tôi sẽ loại bỏ getEntity() khỏi câu trả lời của tôi để tránh nhầm lẫn. – wau

Các vấn đề liên quan