TYPO3 Extbase: обновить запись с регистрацией изменений - PullRequest
0 голосов
/ 17 сентября 2018

Когда я обновляю объект с помощью репозитория Extbase (например, в cronjob или во внешнем интерфейсе), как это ...

$myRepository->update($myObject);

, а затем я использую кнопку «Показать историю изменений / отменить»для этой записи в TYPO3 BE я не вижу никакой истории.Я вижу историю только при редактировании объекта в TYPO3 BE.

Как включить историю?

1 Ответ

0 голосов
/ 17 сентября 2018

Короткая версия: вы не можете, потому что история предназначена для изменений, сделанных только в бэкэнд-интерфейсе.

Более длинная версия: вы вроде как можете, но это потребует большого количества пользовательскихкод в вашем хранилище, который будет выполнять одно из двух действий:

  1. Переопределить метод update в вашем хранилище и из него запустить методы DataHandler для обновления записи, а затем использовать сеанс сохранения дляпометьте свой объект как чистый, чтобы Extbase больше не пытался его сохранить.Обновления через DataHandler будут записывать историю.
  2. Также переопределяют метод update, но записывают записи истории вручную, вместо того, чтобы DataHandler делал это.

ПервыйРешение очень сложное в обращении.Второй означает, что вы должны реализовать немного (дублированного) кода и, скорее всего, не вызовете срабатывания всех обычных хуков в TYPO3 (что обычно нормально, но иногда вызывает проблемы с расширениями сторонних производителей).Если вы вынуждены сделать это, я бы выбрал второе решение.Но прежде всего я хотел бы рассмотреть вопрос о том, возможно ли необходимость иметь специфичную для BE историю для анонимного (не пользователя BE) редактирования, граничащего с злоупотреблением тем, для чего эта история отмены также предназначена для: отслеживания who внес изменения.

...