Field types, widgets, and formatters are plugins
Last updated on
8 May 2021
In Drupal 8, field types, widgets, and formatters are all plugins.
They are automatically discovered if present in the expected directory and using the proper annotation.
The directory structure of a module that implements all three looks as follows:
foo_bar_fields
- foo_bar_fields.info.yml
- src/
- Plugin/
- Field/
- FieldType/
- FooItem.php
- FieldFormatter/
- FooBarFormatter.php
- FieldWidget/
- FooBarWidget.php
- FieldType/
- Field/
- Plugin/
In this guide, we will create a custom field type, field formatter and field widget that generates a random string and displays it.
The name of the module will be random and it will contain the following structure:
random
- random.info.yml
- src/
- Plugin/
- Field/
- FieldType/
- RandomItem.php
- FieldFormatter/
- RandomDefaultFormatter.php
- FieldWidget/
- RandomDefaultWidget.php
- FieldType/
- Field/
- Plugin/
Help improve this page
Page status: No known problems
You can:
You can:
- Log in, click Edit, and edit this page
- Log in, click Discuss, update the Page status value, and suggest an improvement
- Log in and create a Documentation issue with your suggestion
Still on Drupal 7? Security support for Drupal 7 ended on 5 January 2025. Please visit our Drupal 7 End of Life resources page to review all of your options.