Модули могут переопределять значения в объектах конфигурации. Как описано в Система переопределения конфигурации / Предоставление переопределений из модулей, модуль должен реализовать службу с тегом config.factory.override. Класс, используемый для службы, должен реализовать ConfigFactoryOverrideInterface
, как это делает пример, приведенный в документации.
Сервисы:
config_example.overrider:
класс: Drupal\config_example\Config\ConfigExampleOverrides
теги:
- {имя: config.factory.override, приоритет: 5}
пространство имен Drupal\config_example\Config;
используйте Drupal\Core\Cache\CacheableMetadata;
используйте Drupal\Core\Config\ConfigFactoryOverrideInterface;
используйте Drupal\Core\Config\StorageInterface;
/**
* Пример переопределения конфигурации.
*/
класс ConfigExampleOverrides реализует ConfigFactoryOverrideInterface {
/**
* {@inheritdoc}
*/
публичная функция loadOverrides($names) {
$ переопределяет = [];
если (in_array('system.site', $names)) {
$overrides['system.site'] = ['name' => 'Имя переопределенного сайта!'];
}
вернуть $переопределения;
}
/**
* {@inheritdoc}
*/
общедоступная функция getCacheSuffix() {
вернуть 'ConfigExampleOverrider';
}
/**
* {@inheritdoc}
*/
публичная функция getCacheableMetadata($name) {
вернуть новые CacheableMetadata();
}
/**
* {@inheritdoc}
*/
общедоступная функция createConfigObject($name, $collection = StorageInterface::DEFAULT_COLLECTION) {
вернуть НУЛЬ;
}
}
Имейте в виду, что значение в настройки.php файл всегда переопределяет значения модуля. Для модуля, чтобы установить значение конфигурации, настройки.php файл не нужно устанавливать его.