我正在将TYPO3安装从v6更新到v7并且遇到类TYPO3\CMS\Core\DataHandling\DataHandler
的问题
我收到以下错误:
致命错误:无法访问受保护的属性 TYPO3 \ CMS \ Core \ DataHandling \ DataHandler :: $ historyRecords ...
由以下电话引起
public function processCmdmap_afterFinish(&$data)
{
$dataChanged = $data->historyRecords;
有谁能告诉我在TYPO3 v7中你如何获得historyRecords的价值?
提前致谢!!!
答案 0 :(得分:2)
DataHandler::$historyRecords
未在TYPO3 6.2中定义为属性,但由DataHandler
内的类成员访问隐式设置(请参阅DataHandler
of 6.2)。在TYPO3 7.6中,属性已首次声明,并定义为protected
。
可以将$historyRecords
数组视为更改模式,包含oldRecord
和newRecord
,用于DataHandler
的特定调用。这可以看作是RecordDataChangedEvent
的内容 - 在TYPO3中不存在这种方式。该信息收集在DataHandler::compareFieldArrayWithCurrentAndUnset()
。
要获取信息,您可以在TYPO3 7.6中找到三种可能性:
getHistoryRecords()
方法
processDatamap_preProcessFieldArray($incomingFieldArray, $table, $id, DataHandler $dataHandler)
processDatamap_postProcessFieldArray($status, $table, $id, $fieldArray, DataHandler $dataHandler)
$incomingFieldArray
和$fieldArray
$table
与$id
进行比较,收集单身对象的差异
sys_history
中检索
DataHandler::setHistory()
并进行反向查找processCmdmap_afterFinish
挂钩时,此数据已经写入sys_history
查找以下条件的组合
tstamp
等于$GLOBALS['EXEC_TIME']
tablename
等于$table
而recuid
等于$id
history_data
包含$historyRecords