TYPO3 ver. 6.x - дополнительная конфигурация a.k.a. `localconf_local.php`

Что нам нужно

В TYPO3 ver. 4.x мы включили дополнительный файл конфигурации для перезаписи некоторых параметров (т.е. Учетных данных БД) путем добавления оператора include в конце localconf.php:

@include_once('localconf_local.php');

Благодаря этому трюку можно привести пример отдельных параметров базы данных или путей обмена мгновенными сообщениями для каждого разработчика, поскольку мы можем просто игнорировать наши "локальные" файлы из репозитория git.

Какая проблема

К сожалению, в TYPO3 ver. 6.x этот подход требует ручных изменений LocalConfiguration.php для перезаписывания значений перед оператором return, что еще после каждой операции в инструменте установки (или Extension Manager) файл полностью соответствует оригинальному синтаксису (поэтому нам нужно изменить это снова и снова...

Вопрос

У вас, ребята, какое-то обходное решение? Или это просто... невозможно сделать?

Ответ 1

Получил!:)

Ответ: typo3conf/AdditionalConfiguration.php, если этот файл существует, он включается автоматически, чтобы перезаписать некоторые значения, нам нужно использовать хорошо известный синтаксис, т.е.:

<?php
$GLOBALS['TYPO3_CONF_VARS']['DB']['database'] = 'my_local_database';
$GLOBALS['TYPO3_CONF_VARS']['DB']['host']     = 'localhost';
$GLOBALS['TYPO3_CONF_VARS']['DB']['username'] = 'username';
$GLOBALS['TYPO3_CONF_VARS']['DB']['password'] = 'mypassword';
?>

Из "Что нового" SlideShare (стр. 33)

Ответ 2

В дополнение к собственному ответу обратите внимание на факт, что с 6.0 вы не должны получать доступ к TYPO3_CONF_VARS непосредственно в своем расширении, но getLocalConfigurationValueByPath ('BE/loginSecurityLevel') и setLocalConfigurationValueByPath ('BE/loginSecurityLevel', 'rsa') в классе \TYPO3\CMS\Core\Configuration\ConfigurationManager.

Взято из того же "Что нового" SlideShare страница 35.

UPDATE 15.06.15: Страница 35 была включена случайно на слайды. Так как TYPO3 6.2 ConfigurationManager отмечен @internal. Таким образом, вы не должны использовать ConfigurationManager в своем собственном коде. Подробности