ModifyComponentDefinitionEvent 

New in version 14.1

The ModifyComponentDefinitionEvent can be used to modify the definition of a Fluid component before it's written to the cache. Component definitions must not have any dependencies on runtime information, as they might be used for static analysis or IDE auto-completion. Due to the component definitions cache, this is already enforced, as the registered events are only executed once and not on every request.

Example 

EXT:my_extension/Classes/EventListener/ModifyComponentDefinitionListener.php
<?php

declare(strict_types=1);

namespace MyVendor\MyExtension\EventListener;

use TYPO3\CMS\Core\Attribute\AsEventListener;
use TYPO3\CMS\Fluid\Event\ModifyComponentDefinitionEvent;
use TYPO3Fluid\Fluid\Core\Component\ComponentDefinition;
use TYPO3Fluid\Fluid\Core\ViewHelper\ArgumentDefinition;

#[AsEventListener]
final readonly class ModifyComponentDefinitionListener
{
    public function __invoke(ModifyComponentDefinitionEvent $event): void
    {
        // Add required argument to one specific component
        if (
            $event->getNamespace() === 'MyVendor\\MyExtension\\Components' &&
            $event->getComponentDefinition()->getName() === 'myComponent'
        ) {
            $originalDefinition = $event->getComponentDefinition();
            $event->setComponentDefinition(new ComponentDefinition(
                $originalDefinition->getName(),
                [
                    ...$originalDefinition->getArgumentDefinitions(),
                    'myArgument' => new ArgumentDefinition('myArgument', 'string', '', true),
                ],
                $originalDefinition->additionalArgumentsAllowed(),
                $originalDefinition->getAvailableSlots(),
            ));
        }
    }
}
Copied!

API 

class ModifyComponentDefinitionEvent
Fully qualified name
\TYPO3\CMS\Fluid\Event\ModifyComponentDefinitionEvent

Event to modify the static definition of a Fluid component before the definition is written to cache. The definition must not have any dependencies on runtime information, such as the request.

getNamespace ( )
Returns
string
getComponentDefinition ( )
Returns
TYPO3FluidFluidCoreComponentComponentDefinition
setComponentDefinition ( \TYPO3Fluid\Fluid\Core\Component\ComponentDefinition $componentDefinition)
param $componentDefinition

the componentDefinition