Configuratieopslag in Drupal 8
Standaard wordt configuratie-informatie in Drupal 8 opgeslagen in de database.
Configuratiebestandsformaat (YAML)
Extensies (modules, thema’s en profielen) leveren configuratiegegevens aan in YAML-bestanden.
Hier is een voorbeeld van een configuratiebestand:
some_string: 'Woo kittens!' some_int: 42 some_bool: true
Configuratie kan ook genest zijn. Hier is een voorbeeld:
name: thumbnail
label: 'Thumbnail (100x100)'
effects:
1cfec298-8620-4749-b100-ccb6c4500779:
id: image_scale
data:
width: 100
height: 100
upscale: true
weight: 0
uuid: 1cfec298-8620-4749-b100-ccb6c4500779
Configuratieschema
Configuratie heeft een schema. Dit wordt beschreven in de configuratieschema-/metadata documentatie.
Standaardconfiguratie voor een extensie
Een extensie (module, thema of profiel) die standaardwaarden voor zijn configuratie levert, moet deze configuratie opslaan in YAML-bestanden in zijn submap config/install.
Als de extensie alleen basisinstellingen voor eenvoudige configuratie nodig heeft, kunnen alle standaardinstellingen worden opgeslagen in één bestand modulenaam.settings.yml. Voor complexere instellingen kunt u uw configuratie opsplitsen in meerdere bestanden. Elk configuratieobject moet worden opgeslagen in zijn eigen YAML-bestand, en deze moeten worden gegenereerd wanneer de module zijn configuratie opslaat (probeer deze niet handmatig te schrijven).
Om standaardwaarden te leveren voor configuratie die dynamische waarden vereist (die dus niet kunnen worden ingesteld in modulenaam.settings.yml), doet u dit in hook_install(). Bijvoorbeeld:
/**
* Implements hook_install().
*/
function modulename_install() {
// Stel standaardwaarden in voor config die dynamische waarden nodig hebben.
\Drupal::configFactory()->getEditable('modulename.settings')
->set('default_from_address', \Drupal::config('system.site')->get('mail'))
->save();
}
Optionele configuratie voor een extensie
Optionele configuratie-items voor een extensie (module of thema) worden opgeslagen in de submap config/optional.
Dit zijn configuratie-items die afhankelijk zijn van iets waar de extensie zelf niet expliciet van afhankelijk is. Ze worden dus alleen geïnstalleerd wanneer al hun afhankelijkheden aanwezig zijn.
Bijvoorbeeld: als module A optionele configuratie heeft die module B vereist, maar module A wordt eerst geïnstalleerd en module B later, dan zal de map config/optional van module A worden gescand wanneer module B wordt geïnstalleerd, en zal de configuratie dan worden toegepast. Als module B nooit geïnstalleerd wordt, zal het optionele configuratie-item ook nooit geïnstalleerd worden.
Actieve configuratieopslag
Standaard bewaart Drupal 8 de actieve configuratie in de database voor betere prestaties en schaalbaarheid. Zie «Standaard actieve configuratie» (veranderd van bestandsopslag naar database-opslag) voor meer informatie.
Configuratie bijwerken van YAML naar database
Als u tijdens de ontwikkeling de configuratie moet bijwerken van YAML naar de database, kunt u de drush-commando config-import (cim) gebruiken.
U bewerkt het configuratiebestand (.yml) in de map voor actieve configuratie (zoals gedefinieerd in settings.php, bijvoorbeeld sites/default/files/config_6dh1U_2YKLGrrh5oLxAgobbledygook/sync) en voert dan drush cim uit. Maak de caches leeg (drush cr) om de wijzigingen te zien.
Als u tevreden bent met de instellingen in het .yml-bestand, kunt u ze kopiëren naar uw module of thema.