Запись в extConf в контроллере extbase
У меня есть небольшое расширение 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 не работает.
3 ответа
Благодаря 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"
);
Вот как это работает внутри моего 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
так как эта функция защищена, вы не можете вызвать ее из своего кода. Есть две общедоступные функции, которые вы можете использовать:
публичная функция saveAction(массив $config, $extensionKey) (строка 109)
открытая функция saveAndCloseAction(массив $config, $extensionKey) (строка 131)