Запись в 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)

Другие вопросы по тегам