Tôi có một mã đang chạy trong hook_node_update
. Mã này lấy bản sửa đổi của nút đã lưu và so sánh giá trị của các trường giữa nút hiện tại và bản sửa đổi của nó để tạo một số loại nhật ký lịch sử (những gì bị xóa/cập nhật/thêm vào).
Điều này đang hoạt động rất tốt ngoại trừ trường đoạn văn ...
Khi mã của tôi đang cố lấy bản sửa đổi của một đoạn văn (theo cách đệ quy), mỗi lần tôi nhận được cùng một đoạn thay vì bản sửa đổi cũ (do đó không có sự khác biệt nào để ghi lại)
Đây là mã của tôi để nhận bản sửa đổi của nút đã lưu (hoạt động tốt). Mã này cũng được sử dụng cho các đoạn văn (không hoạt động)
$updated_entity
: nút/đoạn hiện đang trong quá trình được lưu
$old_entity
: bản sửa đổi để so sánh với
$old_entity = $updated_entity-> original;
nếu (!$old_entity) {
$storage = $this->getStorage($updated_entity);
// không cần kiểm tra nếu có thể sửa đổi vì chúng tôi chỉ sử dụng Nút và Đoạn văn
if ($revision_id = $updated_entity->getLoadedRevisionId()) {
$old_entity = $storage->loadRevision($revision_id);
}
khác {
//... xử lý thực thể mới
]);
}
}
Mã này, khi được áp dụng cho các đoạn văn, đang tạo ra một $old_entity == $updated_entity
Các đoạn được trích xuất từ nút hiện được lưu như sau:
$paragraphs = $updated_entity->get($paragraph_field)->referencedEntities();
sau đó, họ trở thành $updated_entity
biến trong hàm trên đang cố lấy bản sửa đổi ...