Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TYPO3 Extbase:使用更改日志更新记录_Typo3_Extbase_Typo3 Extensions - Fatal编程技术网

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

TYPO3 Extbase:使用更改日志更新记录,typo3,extbase,typo3-extensions,Typo3,Extbase,Typo3 Extensions,当我用Extbase存储库(例如在cronjob或前端)更新对象时,就像这样 $myRepository->update($myObject); 之后,我用按钮“显示更改历史记录/Un do”来显示TYPO3 BE中的记录,我没有看到任何历史记录。我只在TYPO3 BE中编辑对象时看到历史记录 如何启用历史记录?简短版本:您不能,因为历史记录仅用于在后端接口中完成的更改 更长的版本:您可以,可以,但这将涉及存储库中相当多的自定义代码,这将完成以下两件事之一: 覆盖存储库上的update方

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

$myRepository->update($myObject);
之后,我用按钮“显示更改历史记录/Un do”来显示TYPO3 BE中的记录,我没有看到任何历史记录。我只在TYPO3 BE中编辑对象时看到历史记录


如何启用历史记录?

简短版本:您不能,因为历史记录仅用于在后端接口中完成的更改

更长的版本:您可以,可以,但这将涉及存储库中相当多的自定义代码,这将完成以下两件事之一:

  • 覆盖存储库上的
    update
    方法,并从中激发
    DataHandler
    方法来更新记录-然后使用持久性会话将对象标记为干净,以便Extbase不再尝试将其持久化。通过
    DataHandler
    更新将写入历史记录
  • 也重写
    update
    方法,但手动写入历史记录,而不允许
    DataHandler
    这样做

  • 第一个解决方案处理起来非常复杂。第二种方法意味着您必须实现一点(重复的)代码,并且很可能不会在TYPO3中触发所有常见的钩子(这通常很好,但有时会给第三方扩展带来麻烦)。如果你被迫这样做,我会选择第二种解决方案。但我首先要考虑的是,对于匿名(不为用户)的编辑是否需要有特定的历史,这是与滥用撤销历史的滥用有关的:追踪谁做出了改变。

    短版本:你不能,因为历史只是在后端界面中做的修改。

    更长的版本:您可以,可以,但这将涉及存储库中相当多的自定义代码,这将完成以下两件事之一:

  • 覆盖存储库上的
    update
    方法,并从中激发
    DataHandler
    方法来更新记录-然后使用持久性会话将对象标记为干净,以便Extbase不再尝试将其持久化。通过
    DataHandler
    更新将写入历史记录
  • 也重写
    update
    方法,但手动写入历史记录,而不允许
    DataHandler
    这样做

  • 第一个解决方案处理起来非常复杂。第二种方法意味着您必须实现一点(重复的)代码,并且很可能不会在TYPO3中触发所有常见的钩子(这通常很好,但有时会给第三方扩展带来麻烦)。如果你被迫这样做,我会选择第二种解决方案。但我首先要考虑的是,对于匿名(不为用户)的编辑是否需要有特定的历史,这一点与滥用撤销历史的滥用有关:追踪谁做出了改变。

    还有子属性(如图像或其他东西)的关系(M:N,1:N等)。必须使用DataHandler手动完成。更多的DataHandler可以在这里找到:此外,子属性(如图像或其他东西(M:N、1:N等)的关系必须通过使用DataHandler手动完成。更多DataHandler可在此处找到: