首页 > 解决方案 > TYPO3 Extbase:更新记录并记录更改

问题描述

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

$myRepository->update($myObject);

然后我在 TYPO3 BE 中使用“显示更改历史记录/撤消”按钮来记录这条记录,我没有看到任何历史记录。我只在 TYPO3 BE 中编辑对象时看到历史记录。

如何启用历史记录?

标签: typo3extbasetypo3-extensions

解决方案


短版:您不能,因为历史记录仅用于在后端界面中完成的更改。

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

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

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


推荐阅读