Extending Field Type Lists in the FormNormalizer (Form Framework)

This extension provides a FormNormalizer for the TYPO3 Form Framework that helps with processing submitted form data. It allows specific field types to be ignored or verified during validation.

If you are using custom form field types, you need to register them via the event \Denkwerk\MosparoForm\Event\ModifyFormFieldTypeListsEvent to ensure proper validation behavior.

ModifyFormFieldTypeListsEvent

This event is triggered when the FormNormalizer is instantiated.

You can use this event to:

getIgnoredFieldTypes() / setIgnoredFieldTypes()

getIgnoredFieldTypes() / setIgnoredFieldTypes()
Type
array of strings

Add field types to the ignore list

getVerifiableFieldTypes() / setVerifiableFieldTypes()

getVerifiableFieldTypes() / setVerifiableFieldTypes()
Type
array of strings

Add field types to the verifiable list

Adding your own Event Listener

To register your own field types for the FormNormalizer, follow these steps:

  1. In your custom provider extension, create a new PHP file at: Classes/EventListener/ModifyFormFieldTypesForFormListener.php
  2. Add the following implementation.
    This example adds custom field types to both the ignored and verifiable lists:
    EXT:site_package/Classes/EventListener/ModifyFormFieldTypesForFormListener.php
    namespace Vendor\MyExtension\EventListener;
    
    use Denkwerk\MosparoForm\Event\ModifyFormFieldTypeListsEvent;
    
    final class ModifyFormFieldTypesForFormListener
    {
        public function __invoke(ModifyFormFieldTypeListsEvent $event): void
        {
            // Add custom field types to the ignore list
            $ignored = $event->getIgnoredFieldTypes();
            $ignored[] = 'customFormElementToIgnore';
            $event->setIgnoredFieldTypes($ignored);
    
            // Add custom field types to the verifiable list
            $verifiable = $event->getVerifiableFieldTypes();
            $verifiable[] = 'customFormInputElement';
            $event->setVerifiableFieldTypes($verifiable);
        }
    }
    Copied!
  3. Register the listener in your custom provider extension Services.yaml:

    EXT:site_package/Configuration/service.yaml
    ...
    
    services:
      Vendor\MyExtension\EventListener\ModifyFormFieldTypesForFormListener:
        tags:
          - name: event.listener
            event: Denkwerk\MosparoForm\Event\ModifyFormFieldTypeListsEvent
    Copied!