Để 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ẻ
liên kết
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
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ố 8Có 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); } }0Nhậ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); } }2Xó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); } }30Là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ể