AddJavaScriptModulesEvent

JavaScript events in custom User Settings Configuration options should no longer be placed as inline JavaScript. Instead, use a dedicated JavaScript module to handle custom events.

Example

A listener using mentioned PSR-14 event could look like the following.

  1. Register listener

    typo3conf/my-extension/Configuration/Services.yaml

    services:
       MyVendor\MyExtension\EventListener\CustomUserSettingsListener:
        tags:
          - name: event.listener
            identifier: 'myExtension/CustomUserSettingsListener'
            event: TYPO3\CMS\SetupEvent\AddJavaScriptModulesEvent
    
  2. Implement Listener to load JavaScript module TYPO3/CMS/MyExtension/CustomUserSettingsModule

    namespace MyVendor\MyExtension\EventListener;
    
    use TYPO3\CMS\SetupEvent\AddJavaScriptModulesEvent;
    
    class CustomUserSettingsListener
    {
        // name of JavaScript module to be loaded
        private const MODULE_NAME = 'TYPO3/CMS/MyExtension/CustomUserSettingsModule';
    
        public function __invoke(AddJavaScriptModulesEvent $event): void
        {
            $javaScriptModuleName = 'TYPO3/CMS/MyExtension/CustomUserSettings';
            if (in_array(self::MODULE_NAME, $event->getModules(), true)) {
                return;
            }
            $event->addModule(self::MODULE_NAME);
        }
    }
    

API

addModule(string $moduleName)

| ReturnType: void | Arguments: $moduleName: The JavaScript module name

Add a module to be loaded with RequireJS (e.g. TYPO3/CMS/MyExtension/CustomUserSettingsModule)

getModules()

| ReturnType: array |