我正在使用扩展程序中的“ processDatamap_afterDatabaseOperations”钩子将内容从新创建的新闻(tx_news_domain_model_news)传输到API。
TYPO3版本为6.2.11,如果我使用var_dump或尝试使用$ record-> getCategories()访问类别,则该字段为空。与相关文件相同,falmedia可以运行。这是我的代码:
public function processDatamap_afterDatabaseOperations($status, $table, $id, array $fieldArray, \TYPO3\CMS\Core\DataHandling\DataHandler &$pObj) {
if ($table == 'tx_news_domain_model_news' && $status == 'new') {
$objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Extbase\Object\ObjectManager');
$news = $objectManager->get('GeorgRinger\News\Domain\Repository\NewsRepository');
$record = $news->findByUid($pObj->substNEWwithIDs[$id]);
希望任何人都知道我在这里做错了。我一直在尝试这种方法,但是却一无所获。
预先感谢您的帮助。
答案 0 :(得分:1)
这可能是因为在每个表中的每个记录插入/更新都调用了“ afterDatabaseOperations”,并且该记录与类别之间的关系尚未建立。
只有在完成所有插入/更新之后,DataHandler才会调用方法processRemapStack
,该方法将设置/修复各个记录之间的所有关系(例如,在任何有“ NEW ..”关系的位置)数据图,设置了正确的uid)。
您可以使用的唯一挂钩(其中Alle记录具有正确的关系)是processDatamap_afterAllOperations
挂钩,您可以在DataHandler类的process_datamap
的末尾找到它。
尽管那只是一个参数(DataHandler实例),所以您可能必须尝试使用DataHandler引用的“ datamap”属性来获取插入的新闻记录。