logo

Extra Block Types (EBT) - Nieuwe Layout Builder ervaring❗

Extra Block Types (EBT) - gestileerde, aanpasbare bloktypes: Slideshows, Tabs, Cards, Accordions en vele andere. Ingebouwde instellingen voor achtergrond, DOM Box, javascript-plugins. Ervaar vandaag al de toekomst van layout building.

Demo EBT-modules Download EBT-modules

❗Extra Paragraph Types (EPT) - Nieuwe Paragraphs ervaring

Extra Paragraph Types (EPT) - analoge op paragrafen gebaseerde set modules.

Demo EPT-modules Download EPT-modules

Scroll

Definitie en gebruik van je eigen configuratie in Drupal 8

04/10/2025, by Ivan

Menu

Hoofdonderwerp: het definiëren van je eigen configuratie

Je kunt standaardconfiguratie opnemen in je module, gebaseerd op de functionaliteit van andere modules (contenttypes, views, velden, tekstformaten, enz.).
Bijvoorbeeld: de node-module levert configuratie voor een contenttype, dus in je eigen module kun je een standaard contenttype configureren dat samen met je module geleverd kan worden.

Misschien wil je configuratie definiëren voor je eigen plugins, entiteiten en instellingen, die op hun beurt door andere modules gebruikt kunnen worden, net zoals jij de configuratie van een node-contenttype kunt gebruiken. Drupal 8 maakt het eenvoudig om je eigen configuratie te definiëren.

Configuratiebestand

Configuratiebestanden voor je module staan in de submap config/install van je module. Dus: /modules/example/config/install/example.settings.yml, als je module in /modules/example staat. Je kunt hier configuratiebestanden plaatsen in YAML-formaat.

Hoewel het niet verplicht is, wordt sterk aangeraden de configuratiebestanden van je module te benoemen met de prefix van de modulenaam: bijvoorbeeld example.settings.yml voor configuratie-instellingen. Noem het bestand niet settings.yml of system.settings.yml, omdat dit kan conflicteren met andere bestanden. Als je deze conventie niet volgt, kunnen Drush-commando’s zoals drush config:import in de war raken.

Op dezelfde manier kun je configuratie leveren voor andere componenten, bijvoorbeeld een voorbeeld van een contenttype, door standaardconfiguratie op te nemen in je module, waarbij het bestand node.type.example_mytype.yml de configuratie identificeert die door de node-module wordt verwerkt als een contenttype.

De bestandsnaam van de configuratie (zonder de extensie .yml) is ook de configuratienaam in het systeem, en dit is hoe je vanuit de PHP API toegang krijgt tot je configuratie.

Structuur van een configuratiebestand

Een configuratiebestand moet YAML gebruiken. Je kunt de structuur volledig zelf bepalen, zolang het YAML-formaat correct is. Bijvoorbeeld: als je een parameter wilt die iets specifieks weergeeft vanuit je page controller, kan het bestand een sleutel message bevatten met een stringwaarde:

message: 'Hello'
langcode: 'en'

Het wordt aangeraden de taalcode van het bestand op te nemen onder de sleutel langcode. Dit wordt door het taal­systeem gebruikt om vertaalbare tekst aan te bieden. De sleutel langcode is hiervoor gereserveerd en mag op het hoogste niveau niet voor iets anders gebruikt worden.

Voor vertaling van configuratie moet de config translation module geïnstalleerd zijn.

Om configuratie vertaalbaar te maken, moet je nog twee bestanden toevoegen:

- /modules/example/config/schema/example.schema.yml
- /modules/example/example.config_translation.yml

Het eerste bestand definieert het schema van je configuratie. We definiëren example.settings als een config_object met meerdere velden. Elk veld heeft een type: het basistype bepaalt of het veld vertaalbaar is of niet (zie core.data_types.schema.yml). Bijvoorbeeld: een path met een interne Drupal-pad is niet vertaalbaar, maar een text-veld wel.

# /modules/example/config/schema/example.schema.yml
example.settings:
  type: config_object
  label: 'Example config'
  mapping:
    message:
      type: text
      label: 'Message'

Het tweede bestand voegt een koppeling toe naar /admin/config/regional/config-translation in het vertaalformulier:

# /modules/example/example.config_translation.yml
example.admin.config:
  title: 'Example module'
  base_route_name: example.admin.config
  names:
    - example.settings

Volgens conventie komt de sleutel overeen met de basisroute: example.admin.config is de route naar het configuratieformulier van je module. names somt alle configuratiesleutels op die in het formulier bewerkt worden – in dit geval de configuratie die hierboven in het schema gedefinieerd is.

Het bestand kan ook complexere lijsten en key/value-paren in boomstructuren bevatten. Zie bijvoorbeeld het bestand views.view.content.yml voor een meer uitgebreid configuratievoorbeeld.

Config translation voegt automatisch een tabblad “Translate” toe in het configuratieformulier van de module, maar dit verschijnt niet als het het enige tabblad is. Om een standaard-tabblad toe te voegen aan het configuratieformulier, moeten we nog een bestand example.links.task.yml toevoegen. (Zie Module-gedefinieerde lokale taken.)

// example.links.task.yml
example.admin.config:
  route_name: example.admin.config
  title: Settings
  base_route: example.admin.config

Gebruik van configuratie

Drupal 8 bevat een PHP API om configuratie te lezen en te schrijven. De eenvoudigste manier is de statische methode Drupal::config():

$config = \Drupal::config('example.settings');
// Print 'Hello'.
print $config->get('message');
// Print 'en'.
print $config->get('langcode');

Als je configuratie wilt bewerken en opslaan met een nieuwe waarde, gebruik je \Drupal::service('config.factory')->getEditable():

$config = \Drupal::service('config.factory')->getEditable('example.settings');

// Stel nieuwe message-waarde in en sla op.
$config->set('message', 'Hi')->save();

// Print nu 'Hi'.
print $config->get('message');

Zie ook