TYPO3 8.7 Extension-缺少存储页面ID

时间:2020-07-01 14:04:16

标签: php typo3 typo3-8.x typo3-extensions

我有一个带有插件的扩展程序。我希望扩展的默认storagePid可以是在“数据集集合”字段中设置的默认值-就我所知,这仍然是标准设置。

我的setup.ts和constants.ts在任何地方都没有提到storagePid(我读到如果将它放在setup.ts文件中,它将覆盖默认的storagePid号)

运行插件时,控制器将调用存储库。该存储库会进行查询,我已经告诉它要尊重PID存储:

$query = $this->createQuery();
$query->getQuerySettings()->setRespectStoragePage(TRUE);
....

但是当我运行它时,出现以下错误。

Oops, an error occurred!
Missing storage page ids.

作为测试,我打印出了Controller认为storagePid应该是什么:

$configuration = $this->configurationManager->getConfiguration(\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK);
print( "pluginpid = ".$configuration['persistence']['storagePid']);

...将打印出正确的数字。 因此,控制器知道什么是storagePid号,而存储库则不知道。 (并且上面的打印输出仅在控制器中有效,在回购中无效)

有人知道为什么我的存储库不知道/不使用我设置的storagePid吗?

1 个答案:

答案 0 :(得分:1)

在constants.ts中添加persistence部分,因此它可用于Template模块的槽常量编辑器。即:

plugin.tx_yourextension_yourplugin {
    view {
        # cat=plugin.tx_yourextension_yourplugin/file; type=string; label=Path to template root (FE)
        templateRootPath = EXT:yourextension/Resources/Private/Templates/
        # cat=plugin.tx_yourextension_yourplugin/file; type=string; label=Path to template partials (FE)
        partialRootPath = EXT:yourextension/Resources/Private/Partials/
        # cat=plugin.tx_yourextension_yourplugin/file; type=string; label=Path to template layouts (FE)
        layoutRootPath = EXT:yourextension/Resources/Private/Layouts/
    }
    persistence {
        # cat=plugin.tx_yourextension_yourplugin//a; type=string; label=Default storage PID
        storagePid =
    }
}

稍后在您的setup.ts中重写,方法是:

plugin.tx_yourextension_yourplugin {
    view {
        templateRootPaths.0 = EXT:{extension.shortExtensionKey}/Resources/Private/Templates/
        templateRootPaths.1 = {$plugin.tx_yourextension_yourplugin.view.templateRootPath}
        partialRootPaths.0 = EXT:yourextension/Resources/Private/Partials/
        partialRootPaths.1 = {$plugin.tx_yourextension_yourplugin.view.partialRootPath}
        layoutRootPaths.0 = EXT:tx_yourextension/Resources/Private/Layouts/
        layoutRootPaths.1 = {$plugin.tx_yourextension_yourplugin.view.layoutRootPath}
    }
    persistence {
        storagePid = {$plugin.tx_yourextension_yourplugin.persistence.storagePid}
        #recursive = 1
    }
   
} 

提示零:始终清除缓存多次;)

提示1:使用Extension Builder引导您的新ext时,如果您在其中添加了FE插件,则应添加适当的常数 setup 文件。

提示2:最好不要使用print()

\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($debuggedData, 'Title');

当然,您可以将其导入控制器中

use TYPO3\CMS\Extbase\Utility\DebuggerUtility;