Step 4 - Register the Field Type as a service¶
You can find all files used and modified in this step on GitHub.
To complete the implementation, you must register the Field Type with Symfony by creating a service for it.
Services are by default declared by bundles in
Using a dedicated file for the Field Type services¶
In order to be closer to the kernel best practices, you will declare the Field Type services in a custom
All you have to do is instruct the bundle to load this file in addition to
This is done in the extension definition file,
DependencyInjection/EzSystemsTweetFieldTypeExtension.php, in the
Inside this file, find this line:
This is where the bundle tells Symfony that when parameters are loaded,
services.yml should be loaded from
Resources/config/ (defined above).
Add a new line either before or after this one:
Like most API components, Field Types use the Symfony service tag mechanism.
A service can be assigned one or several tags, with specific parameters. When the dependency injection container is compiled into a PHP file, tags are read by
CompilerPass implementations that add extra handling for tagged services. Each service tagged as
ezpublish.fieldType is added to a registry using the alias argument as its unique identifier (
ezxmltext, etc.). Each Field Type must also inherit from the abstract
ezpublish.fieldType service. This ensures that the initialization steps shared by all Field Types are executed.
Now you can create a YAML file dedicated to the bundle:
1 2 3 4 5 6 7 8
Namespacing the Field Type with your vendor and bundle name limits the risk of naming conflicts.