Gebruik van de UI voor het exporteren van code voor aangepaste velden
Soms, wanneer je een inhoudstype uit een custom module extraheert, kun je ook velden toevoegen die betrekking hebben op dat inhoudstype. De mogelijkheid om automatisch velden aan te maken stelt je in staat om te verwijderen en opnieuw te installeren op meerdere sites, zonder overbodige velden achter te laten en met de garantie dat je niet vergeet ze toe te voegen. Er zijn twee manieren om deze velden aan je codebasis toe te voegen, die we zullen bekijken.
Voorwaarden
- Drupal 8.0.x is geïnstalleerd.
- Je hebt een custom module (de modulenaam die in dit voorbeeld wordt gebruikt is foobar).
- Je hebt een custom inhoudstype in de module (Volg de instructies op de bovenliggende pagina. De naam van het inhoudstype zal Automerk zijn).
Extra velden toevoegen aan ons inhoudstype
Er zijn twee manieren om deze stap te doen. Je kunt de gebruikersinterface gebruiken om velden aan te maken en configuratie te exporteren naar bestanden, of je kunt gewoon zelf de bestanden schrijven. Ik gebruik graag de eerste optie, gewoon om zeker te zijn dat je niets mist dat vereist is. Houd er echter rekening mee dat velden worden geëxporteerd met “field_” aan het begin, en niet “foobar_car_brand_”, om ze te koppelen aan ons custom inhoudstype. We zullen hier de gebruikersinterface gebruiken om velden aan te maken en de code te exporteren die in je custom module zal worden gebruikt.
Gebruik van de UI om velden aan te maken
Zoals eerder vermeld, is deze methode iets beter voor gebruikers die niet erg vertrouwd zijn met de vereisten die Drupal stelt voor het toevoegen van velden aan een inhoudstype.
Activeer het custom inhoudstype
Als je de foobar-module nog niet hebt ingeschakeld aan het einde van de bovenliggende pagina, doe dit dan nu. Als je nu naar de pagina “Inhoud aanmaken” gaat, zie je dat je een nieuw node van het inhoudstype “Car Brand” kunt aanmaken.
/admin/structure/types/manage/car_brand/fields
Nu de module is ingeschakeld, kun je naar de beheerpagina van de velden van je inhoudstype gaan. Voeg alle velden toe die je wilt. Zorg er gewoon voor dat een van de velden die je toevoegt “Brand Information” (field_brand_information) is van het veldtype “Tekst” (geformatteerd, lang, met samenvatting), en verwijder het standaard “Body”-veld. Laat de rest op de standaardinstellingen staan.
Gebruik van de UI voor export van veldconfiguratie /admin/config/development/configuration/single/export
Zodra je je velden hebt toegevoegd, ga naar de pagina voor configuratiesynchronisatie. Bovenaan staan drie tabbladen. Kies “Export” uit deze drie. Kies vervolgens “Single item” onder deze tabbladen.
Exporteerconfiguratie ophalen
Hieronder volgen vier afbeeldingen die tonen welke items je moet exporteren voor het veld “field_brand_information”.
- Field Storage
- Field
- Entity View Display
- Entity Form Display
Onder het configuratiecodeblok zie je de bestandsnaam die je moet aanmaken in je custom module. Kopieer alles uit de configuratiecode naar het opgegeven bestand, behalve de eerste regel die begint met “uuid:”.
Opmerking: als je extra velden hebt toegevoegd, moet je zowel het veld als de field storage voor elk van hen exporteren. Hetzelfde geldt als je meerdere weergaven hebt gemaakt, zoals teaser. In dit voorbeeld tonen we alleen de standaardweergaven.
modules/custom/foobar/config/install/field.storage.node.field_brand_information.yml

modules/custom/foobar/config/install/field.field.node.car_brand.field_brand_information.yml

modules/custom/foobar/config/install/core.entity_view_display.node.car_brand.default.yml

modules/custom/foobar/config/install/core.entity_form_display.node.car_brand.default.yml

Verwijder en activeer de foobar-module opnieuw
Nu je al je veldconfiguraties in je codebasis hebt, is het tijd om de foobar-module te verwijderen. Nadat je de module hebt verwijderd, activeer je de module opnieuw om te zien of deze je custom velden toevoegt. Als je nu naar de pagina “Inhoud aanmaken” gaat, zie je dat je een nieuw node van het inhoudstype “Car Brand” kunt aanmaken, en dat dit ons nieuwe veld met de naam “Brand Information” bevat, evenals alle andere velden die je hebt aangemaakt.