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

9.10.2. Drupal Fields API. Field Formatter: gegevensvelden op de pagina weergeven

17/10/2025, by Ivan

Menu

In dit artikel zullen we Field Formatters behandelen, die ons in staat stellen om de weergave van velden te bewerken en ze op de pagina weer te geven.

In eerdere artikelen hebben we het veldtype Link gemaakt, in dit artikel kijken we naar hoe deze velden op de pagina worden weergegeven en welke klasse hiervoor verantwoordelijk is. Elk veld dat je toevoegt via Drupal kan op de pagina worden weergegeven en de instellingen ervan kunnen worden bewerkt op de pagina Beheer weergave.

manage display

In de kolom Format kun je kiezen hoe het veld weergegeven moet worden. Deze kolom wordt gevormd door de Field Formatter klassen. Laten we de klasse van de module Link bekijken, die de link naar de pagina weergeeft:

core/modules/link/src/Plugin/Field/FieldFormatter/LinkFormatter.php

De annotatie van de klasse toont welk type veld deze formatter betreft.

/**
 * Plugin implementatie van de 'link' formatter.
 *
 * @FieldFormatter(
 *   id = "link",
 *   label = @Translation("Link"),
 *   field_types = {
 *     "link"
 *   }
 * )
 */

In dit bestand zijn we vooral geĂŻnteresseerd in de methode viewElements(), deze methode is verantwoordelijk voor het weergeven van de gegevens op de pagina. Merk op dat de formatter geen verzoeken naar de database stuurt, hij haalt gegevens uit een variabele $items. De gerenderde gegevens van de entiteit worden doorgegeven aan $items. Zo hebben we een scheiding van verantwoordelijkheden voor de klassen: gegevensinvoer via de Field Widget, gegevensopslag via de Field Storage, en gegevensweergave via de Field Formatter. Dit is zeer handig omdat je gegevens op verschillende niveaus kunt cachen. Bijvoorbeeld, als de output of de instellingen van de Field Formatter zijn veranderd, heeft het geen zin om de cache van de knooppunten te resetten, omdat de gegevens niet veranderen, alleen de weergave ervan verandert. Dit is ook handig voor het debatteren en toevoegen van nieuwe functionaliteit. Als je alleen de weergave moet veranderen, voeg je een nieuwe Field Formatter toe voor het veldtype en schrijf je je eigen output.

De LinkFormatter klasse heeft ook de methode settingsForm(), die verantwoordelijk is voor het configureren van de formatter op de pagina Beheer weergave. Via de Form API kun je instellingenvelden voor het veld toevoegen en deze instellingen vervolgens opslaan in de configuratie.

De Link module heeft nog een andere formatter:

core/modules/link/src/Plugin/Field/FieldFormatter/LinkSeparateFormatter.php

Deze is afgeleid van de gewone LinkFormatter, maar met één verschil: er wordt een apart sjabloon gekoppeld voor deze formatter:

core/modules/link/templates/link-formatter-link-separate.html.twig

Op deze manier wordt de HTML voor het weergeven van het veld verkregen door het door het sjabloon te halen. En de formatter vormt alleen een bestand $element, waarbij via $delta gegevens voor elk van de waarden van het meervoudige veld worden geschreven.

Zoals je kunt zien, is de Field API vrij eenvoudig en handig om te gebruiken. In het volgende artikel zullen we ons eigen veldtype schrijven met Storage, Widget en Formatter.