Modulele pot suprascrie valorile din obiectele de configurare. După cum este descris în Sistem de anulare a configurației / Furnizarea de înlocuiri de la module, un modul trebuie să implementeze un serviciu etichetat config.factory.override. Clasa utilizată pentru serviciu trebuie implementată ConfigFactoryOverrideInterface
, așa cum face exemplul dat în documentație.
Servicii:
config_example.overrider:
clasa: Drupal\config_example\Config\ConfigExampleOverrides
Etichete:
- {nume: config.factory.override, prioritate: 5}
spațiu de nume Drupal\config_example\Config;
utilizați Drupal\Core\Cache\CacheableMetadata;
utilizați Drupal\Core\Config\ConfigFactoryOverrideInterface;
utilizați Drupal\Core\Config\StorageInterface;
/**
* Exemplu de modificare a configurației.
*/
clasa ConfigExampleOverrides implementează ConfigFactoryOverrideInterface {
/**
* {@inheritdoc}
*/
funcția publică loadOverrides($nume) {
$overscrie = [];
if (in_array('system.site', $names)) {
$overrides['system.site'] = ['name' => 'Numele site-ului înlocuit!'];
}
returnează $override;
}
/**
* {@inheritdoc}
*/
funcția publică getCacheSuffix() {
returnează „ConfigExampleOverrider”;
}
/**
* {@inheritdoc}
*/
funcția publică getCacheableMetadata($nume) {
returnează noi CacheableMetadata();
}
/**
* {@inheritdoc}
*/
funcția publică createConfigObject($nume, $colecție = StorageInterface::DEFAULT_COLLECTION) {
returnează NULL;
}
}
Rețineți că valoarea în setări.php fișierul înlocuiește întotdeauna valorile modulului. Pentru ca un modul să seteze o valoare de configurare, setări.php fișierul nu trebuie să-l seteze.