Settings::getMergedSettings()
\nn\t3::Settings()->getMergedSettings($extensionName = NULL, $ttContentUidOrSetupArray = []);
Get merge from TypoScript setup for a plugin and its flexform.
Returns the TypoScript array from plugin.tx_extname.settings... back.
Important: Only specify $extensionName if the setup of a FREMDEN extension is to be fetched or there is no controller context because the call is made from the backend... otherwise the FlexForm values are not taken into account!
In the FlexForm ``` use!
` in the TypoScript setup
| $ttContentUidOrSetupArray can be the uid of a tt_content content element
or a simple array to overwrite the values from the TypoScript / FlexForm
\nn\t3::Settings()->getMergedSettings();
\nn\t3::Settings()->getMergedSettings( 'nnsite' );
\nn\t3::Settings()->getMergedSettings( $extensionName, $ttContentUidOrSetupArray );
Copied!
| @return array
Source Code
public function getMergedSettings( $extensionName = null, $ttContentUidOrSetupArray = [] )
{
// Setup für das aktuelle Plugin holen, inkl. Felder aus dem FlexForm
try {
$configurationManager = GeneralUtility::makeInstance(ConfigurationManager::class);
$pluginSettings = $configurationManager->getConfiguration(ConfigurationManagerInterface::CONFIGURATION_TYPE_SETTINGS, $extensionName) ?: [];
} catch ( \Exception $e ) {
$pluginSettings = [];
}
// Fallback: Setup für das Plugin aus globaler TS-Konfiguration holen
if (!$pluginSettings) {
$setup = $this->getPlugin( $extensionName );
$pluginSettings = $setup['settings'] ?? [];
}
// Eine tt_content.uid wurde übergeben. FlexForm des Elementes aus DB laden
if ($ttContentUidOrSetupArray && !is_array($ttContentUidOrSetupArray)) {
$flexform = \nn\t3::Flexform()->getFlexform($ttContentUidOrSetupArray);
$ttContentUidOrSetupArray = $flexform['settings'] ?? [];
}
// Im Flexform sollten die Felder über settings.flexform.varname definiert werden
$flexformSettings = $ttContentUidOrSetupArray['flexform'] ?? $pluginSettings['flexform'] ?? [];
// Merge
ArrayUtility::mergeRecursiveWithOverrule( $pluginSettings, $flexformSettings, true, false );
// Referenz zu settings.flexform behalten
if ($flexformSettings) {
$pluginSettings['flexform'] = $flexformSettings;
}
return $pluginSettings;
}
Copied!