如何在实用程序文件中获取TYPO3设置?

时间:2015-06-15 07:50:46

标签: php typo3 fluid extbase

plugin.tx_xxx {
    setting {
        storagePid = 23
    } 
}

我想在实用程序文件中使用此TYPO3设置。 请帮帮我。

6 个答案:

答案 0 :(得分:7)

您可以在控制器中添加以下行。

$objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Object\\ObjectManager');    
$configurationManager = $objectManager->get('TYPO3\\CMS\\Extbase\\Configuration\\ConfigurationManager');
$setting = $configurationManager->getConfiguration(\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_SETTINGS);   
$ts_config = $setting['plugin.']['tx_xxxx.']['settings.']['storagePid'];

我认为这会对你有所帮助。您也可以在服务文件中使用此拼写错误3设置。

答案 1 :(得分:6)

上述方法仅适用于控制器或服务类,尝试下面它将适用于扩展中的任何PHP文件。

$objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\Extbase\\Object\\ObjectManager');
$configurationManager = $objectManager->get('TYPO3\\CMS\\Extbase\\Configuration\\ConfigurationManager');
$extbaseFrameworkConfiguration = $configurationManager->getConfiguration(\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_FULL_TYPOSCRIPT);
$storagePid = $extbaseFrameworkConfiguration['plugin.']['tx_guesthouse_guesthouse.']['settings.']['storagePid'];

答案 2 :(得分:4)

  

仅适用于TYPO3后端

对于获取配置之前的多域设置root

$configurationManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Configuration\\BackendConfigurationManager');
$configurationManager->currentPageId = ROOT_PID_OF_YOUR_DOMAIN;
$extbaseFrameworkConfiguration = $configurationManager->getTypoScriptSetup();

//Following will be resultant array, find your required stuff from it
print_r($extbaseFrameworkConfiguration);
  

注意:不要忘记使用\TYPO3\CMS\Extbase\Configuration\BackendConfigurationManager扩展您的课程   为了获得受保护变量的访问权限

答案 3 :(得分:1)

现在,在Typo3 8.X中,currentPageId受到保护,因此我们无法直接设置它,并且核心类中不会定义任何set方法。以下是根据新版本的正确代码,可能对您有所帮助。谢谢你正确的方向。

$configurationManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Extbase\\Configuration\\BackendConfigurationManager');
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($configurationManager);
$configurationManager->getDefaultBackendStoragePid(); 
$extbaseFrameworkConfiguration = $configurationManager->getTypoScriptSetup();

//Following will be resultant array, find your required stuff from it
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($extbaseFrameworkConfiguration);

答案 4 :(得分:0)

在任何TYPO3版本(包括10)中,都可以使用此单行代码:

$GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_xxxx.']['settings.']['storagePid'];

要摆脱这些点,请使用TypoScriptService,这样

$typoScriptService = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\TypoScript\TypoScriptService::class);
$typoScriptSettingsWithoutDots = $typoScriptService->convertTypoScriptArrayToPlainArray($GLOBALS['TSFE']->tmpl->setup);

$storagePid = typoScriptSettingsWithoutDots['plugin']['tx_xxxx']['settings']['storagePid'];

享受。

答案 5 :(得分:0)

您还只能加载 CONFIGURATION_TYPE_SETTINGS

  $objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\Extbase\\Object\\ 
ObjectManager');
  $configurationManager = $objectManager->get('TYPO3\\CMS\\Extbase\\Configuration\\ConfigurationManager');
  $pluginSettings = $configurationManager->getConfiguration(\TYPO3\CMS\Extbase\Configuration\ConfigurationManagerInterface::CONFIGURATION_TYPE_SETTINGS, null, 'tx_guesthouse_guesthouse');
  $storagePid = $pluginSettings['storagePid'];

恕我直言,这更有效,因为它不会加载整个TS树。