Typo3 更新钩子中的对象

Typo3 更新钩子中的对象,typo3,extbase,Typo3,Extbase,在用户取消隐藏记录后,我正在使用钩子。在这个钩子中,我想更新一个对象 class ProcessCmdmap { function processDatamap_postProcessFieldArray($status, $table, $id, &$fieldArray, &$reference) { if ($table == 'tx_oaevents_domain_model_events' && $status == 'updat

在用户取消隐藏记录后,我正在使用钩子。在这个钩子中,我想更新一个对象

class ProcessCmdmap {
    function processDatamap_postProcessFieldArray($status, $table, $id, &$fieldArray, &$reference) {
        if ($table == 'tx_oaevents_domain_model_events' && $status == 'update' && $fieldArray['hidden'] == 0) {

               // Get objectmanager
                $objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');

                // Get repo
                $repository = $objectManager->get('Mab\\Oaevents\\Domain\\Repository\\EventsRepository');

                // Get config manager
                $configurationManager = $objectManager->get('TYPO3\\CMS\\Extbase\\Configuration\\ConfigurationManagerInterface');

                // Get settings and storage pid
                $settings = $configurationManager->getConfiguration(\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_FULL_TYPOSCRIPT);
                $storagePid = $settings['plugin.']['tx_oaevents.']['persistence.']['storagePid'];

                // Build default query settings
                $querySettings = $objectManager->get('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\Typo3QuerySettings');
                $querySettings->setStoragePageIds(array($storagePid));

                $repository->setDefaultQuerySettings($querySettings);

                $object = $repository->findByUid($id);

                // modify object
                // Update / Persist object


        }
    }
}
但我无法检索具有“findByUid()”或“findAll()”的对象。我是否在错误的范围内使用objectmanager?或者如何检索和更新到我的对象中

有人能给我一个提示吗

更新


现在我放弃了:(并且没有使用objectmanager和存储库,我使用了
$GLOBALS['TYPO3\u DB']

中的函数,我明确建议在这一点上使用
$GLOBALS['TYPO3\u DB']
来遵循您的解决方案。Extbase只会带来大量开销

如果没有Extbase,您在这里也需要更少的代码

无论如何:
Extbase生成的查询很可能已被破坏。记录您的查询并检查生成的查询。尝试并修改它,直到它起作用。检查差异。

此时,我绝对建议使用
$GLOBALS['TYPO3\u DB']
遵循您的解决方案。Extbase只会带来大量开销

如果没有Extbase,您在这里也需要更少的代码

无论如何: Extbase生成的查询很可能已中断。请记录您的查询并检查生成的查询。尝试并修改它,直到它正常工作。检查差异。

您可以不使用“SetStoragePageId”进行尝试。 如果您是按uid查找记录,则它是无用的

processDatamap的工作代码:

/** @var $objectManager \TYPO3\CMS\Extbase\Object\ObjectManager */
$objectManager = GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');

/** @var $orderRepository \Vendor\ExtensionName\Domain\Repository\OrderRepository */
$orderRepository = $objectManager->get('Vendor\\ExtensionName\\Domain\\Repository\\OrderRepository');
$order = $orderRepository->findByUid($id);
的确,$GLOBALS['TYPO3_DB']的使用更容易。

您可以尝试不使用“setStoragePageId”。 如果您是按uid查找记录,则它是无用的

processDatamap的工作代码:

/** @var $objectManager \TYPO3\CMS\Extbase\Object\ObjectManager */
$objectManager = GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');

/** @var $orderRepository \Vendor\ExtensionName\Domain\Repository\OrderRepository */
$orderRepository = $objectManager->get('Vendor\\ExtensionName\\Domain\\Repository\\OrderRepository');
$order = $orderRepository->findByUid($id);
的确,$GLOBALS['TYPO3_DB']的使用更容易