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']的使用更容易