在 extbase 控制器中写入 extConf
Writing to extConf in extbase controller
我有一个小的 extbase 扩展,可以更改我的颜色设置(例如 css、cookiebar 等),我还想更改后端插件按钮的颜色,在 backend
sysext 在我的控制器中。
获取值:
$var = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['backend']);
$var["loginHighlightColor"]="#444444";
但是现在,我该如何保存这个值呢?
尝试以下语句时,它正确设置了值,但没有持久化:
$GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['backend'] = serialize($var);
即使尝试使用 PersistentManager 手动持久化也行不通。
这就是它在我的 AdditionalConfiguration.php 中的工作方式。也许你可以适应它:
$resourcePath = 'EXT:' . $extKey . '/Resources/Public/Images/';
$GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['backend'] = serialize(
[
'loginLogo' => $resourcePath . 'logo.svg',
'loginHighlightColor' => '#c0c0c0',
'loginBackgroundImage' => $resourcePath . 'login-bg.svg',
]
);
您可能需要执行与此处相同的操作:
http://api.typo3.org/typo3cms/current/html/_configuration_controller_8php_source.html#l00156
由于该函数受到保护,您不能从您的代码中调用它。
您可以使用两个 public 函数:
public 函数 saveAction(array $config, $extensionKey)(第 109 行)
public 函数 saveAndCloseAction(array $config, $extensionKey)(第 131 行)
感谢Bernd Wilke 我明白了:
$var = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['backend']);
$var["loginHighlightColor"]="#444444";
$GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['backend'] = serialize($var);
$configurationUtility = $this->objectManager->get(\TYPO3\CMS\Extensionmanager\Utility\ConfigurationUtility::class);
$newConfiguration = $configurationUtility->getCurrentConfiguration("backend");
\TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule($newConfiguration, $var);
$configurationUtility->writeConfiguration(
$configurationUtility->convertValuedToNestedConfiguration($newConfiguration),
"backend"
);
我有一个小的 extbase 扩展,可以更改我的颜色设置(例如 css、cookiebar 等),我还想更改后端插件按钮的颜色,在 backend
sysext 在我的控制器中。
获取值:
$var = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['backend']);
$var["loginHighlightColor"]="#444444";
但是现在,我该如何保存这个值呢? 尝试以下语句时,它正确设置了值,但没有持久化:
$GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['backend'] = serialize($var);
即使尝试使用 PersistentManager 手动持久化也行不通。
这就是它在我的 AdditionalConfiguration.php 中的工作方式。也许你可以适应它:
$resourcePath = 'EXT:' . $extKey . '/Resources/Public/Images/';
$GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['backend'] = serialize(
[
'loginLogo' => $resourcePath . 'logo.svg',
'loginHighlightColor' => '#c0c0c0',
'loginBackgroundImage' => $resourcePath . 'login-bg.svg',
]
);
您可能需要执行与此处相同的操作:
http://api.typo3.org/typo3cms/current/html/_configuration_controller_8php_source.html#l00156
由于该函数受到保护,您不能从您的代码中调用它。 您可以使用两个 public 函数:
public 函数 saveAction(array $config, $extensionKey)(第 109 行)
public 函数 saveAndCloseAction(array $config, $extensionKey)(第 131 行)
感谢Bernd Wilke 我明白了:
$var = unserialize($GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['backend']);
$var["loginHighlightColor"]="#444444";
$GLOBALS['TYPO3_CONF_VARS']['EXT']['extConf']['backend'] = serialize($var);
$configurationUtility = $this->objectManager->get(\TYPO3\CMS\Extensionmanager\Utility\ConfigurationUtility::class);
$newConfiguration = $configurationUtility->getCurrentConfiguration("backend");
\TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule($newConfiguration, $var);
$configurationUtility->writeConfiguration(
$configurationUtility->convertValuedToNestedConfiguration($newConfiguration),
"backend"
);