Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typo3 类型3忽略了存储PID_Typo3_Extbase_Typo3 6.2.x - Fatal编程技术网

Typo3 类型3忽略了存储PID

Typo3 类型3忽略了存储PID,typo3,extbase,typo3-6.2.x,Typo3,Extbase,Typo3 6.2.x,我尝试使用调度程序任务构建导入程序 该任务创建一个对象管理器,该管理器创建我的导入服务。 此导入服务对存储库具有依赖关系 我只需创建实例并将它们添加到存储库中 在我试图指定我的记录应该保存在哪个pid上之前,它工作得很好。我试图在setup.txt中配置它 plugin.tx_extkey { view { templateRootPath = {$plugin.tx_extkey.view.templateRootPath} partialRootPat

我尝试使用调度程序任务构建导入程序

该任务创建一个对象管理器,该管理器创建我的导入服务。 此导入服务对存储库具有依赖关系

我只需创建实例并将它们添加到存储库中

在我试图指定我的记录应该保存在哪个pid上之前,它工作得很好。我试图在setup.txt中配置它

plugin.tx_extkey {
    view {
        templateRootPath = {$plugin.tx_extkey.view.templateRootPath}
        partialRootPath = {$plugin.tx_extkey.view.partialRootPath}
        layoutRootPath = {$plugin.tx_extkey.view.layoutRootPath}
    }
    persistence {
        storagePid = {$plugin.tx_extkey.persistence.storagePid}
        classes {
            EXTNAME\EXTNAME\Domain\Model\MODELNAME {
                newRecordStoragePid = {$plugin.tx_extkey.persistence.storagePid}
            }
        }
    }
    features {
        # uncomment the following line to enable the new Property Mapper.
        # rewrittenPropertyMapper = 1
    }
}

module.tx_extkey {
    persistence < plugin.tx_extkey.persistence
}
但那没用。所有内容仍保存到pid 1


有什么我可能忽略的陷阱吗?

我发现了一个丑陋的方法。通过调度程序执行服务时,BackendConfigurationManager不会获取extensionName。在任务中手动设置可以解决此问题

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

/** @var BackendConfigurationManager $configurationManager */
$configurationManager = $objectManager->get('TYPO3\CMS\Extbase\Configuration\BackendConfigurationManager');
$configurationManager->setConfiguration(array(
    'extensionName' => 'hnsenvionjob'
));

我使用了一个ImportCommandController,正如lorenz在我的实际代码中所建议的那样。在此期间,我的代码发生了变化,如果您需要,请告诉我

我必须手动设置pid:


$item->setPid$storagePid

有一个简单的窍门

加上你的ts之类的东西

plugin.tx_extkey.settings.storagePid = {$plugin.tx_extkey.persistence.storagePid}
这将允许您访问代码中任何可以访问ts的地方的存储pid。例如,在控制器中

$this->settings['storagePid']

pid 1看起来像是字符串的强制转换,而不是页面ID。因此我怀疑变量没有设置。另一个可能的原因可能是错误的插件-tx_extkey实际上是tx_extkey_pluginname-因此,如果使用多个插件,请确保为正确的插件配置内容,这实际上是我的问题;--完整文档如下所示: