Điểm:-1

Làm cách nào để truy cập giá trị được bảo vệ của thực thể nút?

lá cờ in

Tôi có một nút xem và tôi sử dụng đoạn mã dưới đây để loại bỏ các đối tượng nút:

$node = \Drupal::entityTypeManager()
      ->getStorage('nút')
      ->loadMultiple();
 dpm($nút);

trả về đầu ra dưới đây:

nhập mô tả hình ảnh ở đây

Tôi có thể xem các thuộc tính của từng nút. Trong phần này, tôi muốn truy cập target_id/value của trường được đánh dấu - field_cp_level2_ref_level3. Tôi đã thử dòng dưới đây và nó hiện ra dưới dạng null:

$node->field_cp_level2_ref_level3->target_id

Làm cách nào để truy cập giá trị trường này?

miststudent2011 avatar
lá cờ fr
Does this answer your question? [8 - Node::load is generating an object with circular reference which is crashing kint() and var\_export()](https://drupal.stackexchange.com/questions/200046/8-nodeload-is-generating-an-object-with-circular-reference-which-is-crashing)
miststudent2011 avatar
lá cờ fr
When you want to dump it, just use $node->toArray() , Refer https://drupal.stackexchange.com/a/200118/71454
lá cờ in
@misstudent2011 Tôi không đề cập đến việc trang của tôi bị lỗi do tham chiếu vòng được tạo. Tôi chỉ hỏi một cách để truy cập các giá trị được bảo vệ. Câu hỏi bạn đã tham khảo không giúp tôi.
miststudent2011 avatar
lá cờ fr
bạn đã xem qua câu trả lời trong liên kết tôi đã chia sẻ chưa? Nó cung cấp cho bạn cách để có được các giá trị được bảo vệ. Có vẻ như bạn đang gặp khó khăn để lấy nó, hãy để tôi dán nó dưới dạng nhận xét.
miststudent2011 avatar
lá cờ fr
Khi bạn muốn kết xuất nó, chỉ cần sử dụng `$node->toArray()`. Sau đó, bạn nhận được một mảng với các giá trị đơn giản.Bạn có thể sử dụng lại các tên trường và thuộc tính đó để truy cập các giá trị trên đối tượng nút, ví dụ: `$node->yourfield->value.`
lá cờ in
Cảm ơn @miststudent2011 nhưng thực hiện $node->toArray sẽ trả về lỗi bên dưới: "Lỗi: Gọi hàm thành viên toArray() trên mảng" . cũng làm $node->yourfield->value trả về null :(
Điểm:0
lá cờ bd

Vấn đề của bạn là bạn giả định sai kết quả của tảiMultiple là một đối tượng nút, khi thay vào đó, nó trả về một mảng các đối tượng nút.

Bạn sẽ có thể làm điều này:

$nodes = \Drupal::entityTypeManager()
  ->getStorage('nút')
  ->loadMultiple();
nút $ = đặt lại ($ nút);

Bây giờ bạn có thể truy cập các giá trị bạn thấy trong đầu ra gỡ lỗi của mình:

$node->field_cp_level2_ref_level3->target_id;

Thực sự có một chút vấn đề khi tải tất cả các nút bạn có trong hệ thống của mình. Điều đó có thể vẫn hoạt động với 294 nút của bạn, nhưng nó sẽ tạo ra sự cố trên các trang web có nhiều nội dung hơn. Thay vào đó, bạn nên thêm điều kiện, ví dụ: bằng cách sử dụng tảiByProperties trên bộ lưu trữ nút.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.