TYPO3 Extbase: update record with logging of changes

后端 未结 1 575
忘掉有多难
忘掉有多难 2021-01-26 00:31

When I update an object with an Extbase repository (e.g. in a cronjob or in the frontend) like this...

$myRepository->update($myObject);

and

1条回答
  •  粉色の甜心
    2021-01-26 00:46

    Short version: you can't, because the history is for changes done in the backend interface only.

    Longer version: you sort of, kind of can, but that would involve quite a bit of custom code in your repository which would do one of two things:

    1. Override the update method on your repository and from it, fire DataHandler methods to update the record - then use the persistence session to mark your object as clean so Extbase doesn't try to persist it again. Updates via DataHandler will write the history.
    2. Also override the update method but write the history records manually instead of allowing DataHandler to do it.

    The first solution is very complex to handle. The second one means you have to implement a bit of (duplicated) code and likely won't cause all the usual hooks to trigger in TYPO3 (which is usually fine but does sometimes cause trouble with third party extensions). If you are forced to do this, I would choose the second solution. But I would first of all consider if perhaps the need to have BE-specific history for anonymous (no BE user) editing that's bordering on abuse of what that undo history was also intended for: tracing who made a change.

    0 讨论(0)
提交回复
热议问题