TYPO3 Extbase:使用更改日志更新记录

TYPO3 Extbase: update record with logging of changes

当我像这样使用 Extbase 存储库更新对象时(例如,在 cronjob 或前端中)...

$myRepository->update($myObject);

然后我在 TYPO3 BE 中使用按钮 "Display change history / Un-do" 记录,我没有看到任何历史记录。我在TYPO3 BE中编辑对象时只看到历史。

如何启用历史记录?

简短版本:不能,因为历史记录仅针对在后端界面中完成的更改。

更长的版本:你有点,有点可以,但这会在你的存储库中涉及相当多的自定义代码,这些代码会做以下两件事之一:

  1. 覆盖存储库上的 update 方法,并从中触发 DataHandler 方法来更新记录 - 然后使用持久性会话将对象标记为干净,这样 Extbase 就不会尝试再坚持下去。通过 DataHandler 更新将写入历史记录。
  2. 也重写 update 方法,但手动写入历史记录,而不是让 DataHandler 这样做。

第一个解决方案处理起来非常复杂。第二个意味着你必须实现一些(重复的)代码并且可能不会导致所有常见的钩子在 TYPO3 中触发(这通常很好但有时会导致第三方扩展出现问题)。如果你被迫这样做,我会选择第二种解决方案。但我首先会考虑是否需要为匿名(无 BE 用户)编辑提供特定于 BE 的历史记录,这接近于滥用撤消历史记录 also 用于:跟踪 进行了更改。