Điểm:0

Làm thế nào để có được bản sửa đổi của một đoạn văn

lá cờ sa

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 ...

Điểm:1
lá cờ cn

không tên phía trên chức năng chỉ hoạt động cho một nút cụ thể mà bạn nhận được thông qua hook dưới dạng tham số. Tải các đoạn được tham chiếu cũ thông qua thực thể ban đầu:

$old_paragraphs = $node-> original->get($paragraph_field)->referencedEntities();

Đối với các đoạn lồng nhau, bạn có thể áp dụng tải đệ quy, nhưng mỗi nhánh (cũ/mới) riêng biệt và không cùng với phía trên chức năng, sử dụng ->referencedEntities() cho mulitple và ->entity cho các mục trường đơn lẻ, các chức năng này sẽ tải các bản sửa đổi.

Trong một trang web đa ngôn ngữ, bạn phải dịch đoạn văn bằng ngôn ngữ nút:

$node_language = $node->ngôn ngữ()->getId();
$value = $paragraph->getTranslation($node_language)->field_foo->value;
lá cờ cn
Nhận xét không dành cho thảo luận mở rộng; cuộc trò chuyện này đã được [chuyển sang trò chuyện](https://chat.stackexchange.com/rooms/131668/discussion-on-answer-by-4k4-how-to-get-the-revision-of-a-paragraph) .
lá cờ cn
Nhưng nếu các đoạn được sắp xếp lại thì sao? Khóa mảng đã cho trong mảng được trả về bởi ReferencedEntities có thể không trỏ đến cùng một thực thể. Tôi nghĩ thay vào đó chúng ta nên tải thực thể cũ hơn từ ID thực thể của mục nhập đoạn văn.

Đă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.