Làm cách nào để lấy giá trị trường nút trong Drupal 8?

Để cập nhật giá trị của trường nút, chúng tôi sẽ sử dụng móc nối

use Drupal\node\NodeInterface;

function MODULE_entity_presave(Drupal\Core\Entity\EntityInterface $entity)   {
  if ($entity instanceof NodeInterface) {
    $entity->set('title', 'A New Title');
    $entity->set('body', 'This is the updated body content');
    $entity->set('field_group', 12);
  }
}
4. Giả sử chúng tôi muốn cập nhật tiêu đề, nội dung và trường tùy chỉnh như nhóm, đây là cách chúng tôi triển khai hook

function MODULE_node_presave(Drupal\node\NodeInterface $node) {
    $node->setTitle('A New Title');
    $node->set('body', 'This is the updated body content');
    $node->set('field_group', 12);
}

Một cái móc khác mà chúng ta cũng có thể sử dụng là

use Drupal\node\NodeInterface;

function MODULE_entity_presave(Drupal\Core\Entity\EntityInterface $entity)   {
  if ($entity instanceof NodeInterface) {
    $entity->set('title', 'A New Title');
    $entity->set('body', 'This is the updated body content');
    $entity->set('field_group', 12);
  }
}
5

use Drupal\node\NodeInterface;

function MODULE_entity_presave(Drupal\Core\Entity\EntityInterface $entity)   {
  if ($entity instanceof NodeInterface) {
    $entity->set('title', 'A New Title');
    $entity->set('body', 'This is the updated body content');
    $entity->set('field_group', 12);
  }
}

Đó là cách lập trình cập nhật giá trị của trường nút trong Drupal 8

Chúc vui vẻ

  • THẺ
  • drupal
  • PHP

Chia sẻ

Facebook

Twitter

Pinterest

WhatsApp

liên kết

ReddIt

VK

đào

Bài viết trước Giải nén tệp zip bằng PHP

Bài viết tiếp theo Tắt bộ đệm cho khối trong Drupal 8+

Pete Houston

https. //petehouston. com

Xin chào, đây là blog của tôi. Cảm ơn vì đã đi ngang qua. Đừng ngần ngại liên hệ với tôi. Bạn luôn được chào đón

Một tweet gần đây của CHX khiến tôi suy nghĩ. Drupal 8 đã được phát hành gần 5 năm trước và một số thứ vẫn còn là một bí ẩn đối với nhiều nhà phát triển, bao gồm cả tôi. Đây là tweet tôi đã đề cập

Hình ảnh

Làm cách nào để lấy giá trị trường nút trong Drupal 8?

Cũng giống như phần lớn những người trong cuộc thăm dò của anh ấy, tôi cũng không biết rằng bạn có thể rút ngắn điều này

$entity->field_name->value = 'foo' 
$entity->field_name->target_id = 123

để này

$entity->field_name = 'foo' 
$entity->field_name = 123

Đó là một cách ngắn hơn để viết cùng một thứ, điều này tốt, nhưng cá nhân tôi thích sử dụng phương thức set() như thế này

$entity->set('field_name', 'foo'); 
$entity->set('field_name', 123);

Bằng cách nào đó, điều này có vẻ và cảm thấy tốt hơn nhiều theo ý kiến ​​​​của tôi. Điều đáng nói là đối với các trường tham chiếu thực thể thay vì ID thực thể, bạn có thể đặt đối tượng thực thể như thế này

$entity->set('field_name', $another_entity);

Điều tương tự cũng áp dụng nếu bạn không sử dụng phương thức set()

$entity->field_name = $another_entity;

Còn việc cập nhật các trường đa giá trị theo chương trình thì sao?

Các trường đa giá trị không khác nhau. Bạn chỉ cần sử dụng mảng. Vì vậy, thay vì điều này

$entity->field_name_muti->value = ['foo', 'bar', 'baz']; 
$entity->field_name_multi->target_id = [1, 2, 3]
$entity->field_name_multi->target_id = [$another_entity1, $another_entity2, $another_entity3]

bạn có thể sử dụng cái này

________số 8

Có bất kỳ trường hợp ngoại lệ?

Chắc chắn rồi. Bạn không thể sử dụng cách rút gọn nếu bạn có một loại trường có nhiều thuộc tính. Ví dụ: trường Giá trong Drupal Commerce có nhiều thuộc tính. Bạn có thể nhìn thấy. Để đặt giá trị của trường Giá, bạn có thể làm điều này

$entity->field_price->number = 10; 
$entity->field_price->currency_code = 'EUR';

Trong trường hợp này, bạn phải đặt giá trị cho cả thuộc tính Số và Mã tiền tệ. Cách khác để đặt trường đa thuộc tính là như thế này

Đoạn mã có thể được sử dụng để truy cập vào giá trị trường cho một nút trong drupal 8

Ví dụ

use Drupal\node\NodeInterface;

function MODULE_entity_presave(Drupal\Core\Entity\EntityInterface $entity)   {
  if ($entity instanceof NodeInterface) {
    $entity->set('title', 'A New Title');
    $entity->set('body', 'This is the updated body content');
    $entity->set('field_group', 12);
  }
}
0

Nhận các nút từ một truy vấn. nhận nhiều giá trị nút bằng cách sử dụng truy vấn và vòng lặp, thực hiện các hoạt động khác cho nút này

use Drupal\node\NodeInterface;

function MODULE_entity_presave(Drupal\Core\Entity\EntityInterface $entity)   {
  if ($entity instanceof NodeInterface) {
    $entity->set('title', 'A New Title');
    $entity->set('body', 'This is the updated body content');
    $entity->set('field_group', 12);
  }
}
1

Đặt giá trị trường theo chương trình cho nút

use Drupal\node\NodeInterface;

function MODULE_entity_presave(Drupal\Core\Entity\EntityInterface $entity)   {
  if ($entity instanceof NodeInterface) {
    $entity->set('title', 'A New Title');
    $entity->set('body', 'This is the updated body content');
    $entity->set('field_group', 12);
  }
}
2

Xóa nút theo chương trình

use Drupal\node\NodeInterface;

function MODULE_entity_presave(Drupal\Core\Entity\EntityInterface $entity)   {
  if ($entity instanceof NodeInterface) {
    $entity->set('title', 'A New Title');
    $entity->set('body', 'This is the updated body content');
    $entity->set('field_group', 12);
  }
}
30

Làm việc với Đoạn văn Đoạn văn" (từ mô-đun đóng góp phổ biến cùng tên) là các thực thể riêng biệt có liên quan đến các nút cha thông qua bản sửa đổi tham chiếu thực thể

Làm cách nào để lấy giá trị nút trong Drupal?

$node = \Drupal. entityTypeManager()->getStorage('node')->load($nid); Cái này được sử dụng để lấy giá trị trường. $terms = $node->get('field_Name')->getValue(); .

Làm cách nào để lấy dữ liệu nút trong Drupal 8?

Để tải chi tiết nút bằng cách sử dụng id của nó trong Drupal 8, hãy sử dụng cú pháp sau. $node_details = Nút. tải($nid); . Lưu ý rằng tham số phải là một mảng id. We can load multiple nodes in Drupal 8 using load multiple() function. Note that the parameter should be an array of ids.

Truy vấn thực thể trong Drupal 8 là gì?

entityQuery cho phép nhà phát triển truy vấn các thực thể và trường Drupal theo cách giống SQL . Các bảng và trường của trang web Drupal không bao giờ khớp 1-1 đối với các thực thể và trường của trang web - entityQuery cho phép chúng tôi truy vấn cơ sở dữ liệu như thể chúng là 1-1.

Nút trong Drupal 8 là gì?

Tất cả nội dung trên trang web Drupal được lưu trữ và coi là "nút". Nút là bất kỳ phần nội dung riêng lẻ nào, chẳng hạn như trang, cuộc thăm dò ý kiến, bài viết, chủ đề diễn đàn hoặc mục blog . Nhận xét không được lưu trữ dưới dạng các nút nhưng luôn được kết nối với một. Xử lý tất cả nội dung dưới dạng các nút cho phép linh hoạt tạo các loại nội dung mới.