У меня есть код, который работает в hook_node_update
. Этот код захватывает ревизию сохраненного узла и сравнивает значения полей между текущим узлом и его ревизией, чтобы создать своего рода исторический журнал (что было удалено/обновлено/добавлено).
Это работает очень хорошо, за исключением поля абзаца...
Когда мой код пытается получить версию абзаца (рекурсивно), я каждый раз получаю один и тот же абзац вместо старой версии (таким образом, никаких различий в журнале)
Вот мой код для получения версии сохраненного узла (работает хорошо). Этот код также используется для абзацев (не работает)
$updated_entity
: узел/абзац, который в данный момент находится в процессе сохранения
$old_entity
: ревизия для сравнения с
$old_entity = $updated_entity->оригинал;
если (!$old_entity) {
$storage = $this->getStorage($updated_entity);
// нет необходимости проверять, можно ли пересматривать, так как мы используем только Node и Paragraphs
если ($revision_id = $updated_entity->getLoadedRevisionId()) {
$old_entity = $storage->loadRevision($revision_id);
}
еще {
//... обработка новой сущности
]);
}
}
Этот код, примененный к абзацам, создает $old_entity == $updated_entity
Абзацы извлекаются из текущего сохраненного узла следующим образом:
$paragraphs = $updated_entity->get($paragraph_field)->referencedEntities();
после этого они становятся $updated_entity
переменная в верхней функции, которая пытается получить ревизию...