ModifyComponentDefinitionEvent
New in version 14.1
The
Modify 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(),
));
}
}
}
API
- class ModifyComponentDefinitionEvent
-
- Fully qualified name
-
\TYPO3\
CMS\ Fluid\ Event\ Modify Component Definition Event
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.