我在用户取消隐藏记录后使用了一个钩子。在这个钩子中,我想更新一个对象。
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和repository,我使用$GLOBALS['TYPO3_DB']
答案 0 :(得分:0)
我绝对建议您在此时使用$GLOBALS['TYPO3_DB']
来关注您的解决方案。 Extbase只会带来很多开销。
如果没有Extbase,您还需要更少的代码。
反正: 很可能是Extbase生成的查询被破坏了。记录您的查询并检查生成的查询。尝试并修改它,直到它工作。检查区别。
答案 1 :(得分:0)
您可以在不使用" setStoragePageIds"的情况下尝试。 如果您正在通过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']更容易。