ModifyLinkExplanationEvent¶
New in version 12.0: This event serves as a more powerful and flexible alternative
for the removed $GLOBALS['TYPO3_CONF_VARS']['SYS']['formEngine']['linkHandler']
hook.
While the removed hook effectively only allowed to modify the link explanation
of TCA link
fields in case the resolved link type did not already match
one of those, implemented by TYPO3 itself, the new event allows to
always modify the link explanation of any type. Additionally, this also allows
to modify the additionalAttributes
, displayed below the actual link
explanation field. This is especially useful for extended link handler setups.
To modify the link explanation, the following methods are available:
getLinkExplanation()
: Returns the current link explanation datasetLinkExplanation()
: Set the link explanation datagetLinkExplanationValue()
: Returns a specific link explanation valuesetLinkExplanationValue()
: Sets a specific link explanation value
The link explanation array usually contains the following values:
text
: The text to show in the link explanation fieldicon
: The markup for the icon, displayed in front of the link explanation fieldadditionalAttributes
: The markup for additional attributes, displayed below the link explanation field
The current context can be evaluated using the following methods:
getLinkData()
: Returns the resolved link data, such as the page uidgetLinkParts()
: Returns the resolved link parts, such asurl
,target
andadditionalParams
getElementData()
: Returns the full FormEngine$data
array for the current element
Example¶
Registration of the event listener in the extension's Services.yaml
:
services:
# Place here the default dependency injection configuration
MyVendor\MyExtension\Backend\EventListener\MyEventListener:
tags:
- name: event.listener
identifier: 'my-extension/backend/modify-link-explanation'
Read how to configure dependency injection in extensions.
The corresponding event listener class:
<?php
declare(strict_types=1);
namespace MyVendor\MyExtension\Backend\EventListener;
use TYPO3\CMS\Backend\Form\Event\ModifyLinkExplanationEvent;
use TYPO3\CMS\Core\Imaging\Icon;
use TYPO3\CMS\Core\Imaging\IconFactory;
final class MyEventListener
{
public function __construct(
private readonly IconFactory $iconFactory
) {
}
public function __invoke(ModifyLinkExplanationEvent $event): void
{
// Use a custom icon for a custom link type
if ($event->getLinkData()['type'] === 'myCustomLinkType') {
$event->setLinkExplanationValue(
'icon',
$this->iconFactory->getIcon(
'my-custom-link-icon',
Icon::SIZE_SMALL
)->render()
);
}
}
}
API¶
- class TYPO3\CMS\Backend\Form\Event\ModifyLinkExplanationEvent¶
Listeners to this Event will be able to modify the link explanation array, used in FormEngine for link fields
- getLinkData()¶
- Return type
array
- getLinkParts()¶
- Return type
array
- getElementData()¶
- Return type
array
- getLinkExplanation()¶
- Return type
array
- setLinkExplanation(array $linkExplanation)¶
- Parameters
$linkExplanation (
array
) -- the linkExplanation
- getLinkExplanationValue(string $key, mixed $default = NULL)¶
- Parameters
$key (
string
) -- the key$default (
mixed
) -- the default, default: NULL
- Return type
mixed
- setLinkExplanationValue(string $key, mixed $value)¶
- Parameters
$key (
string
) -- the key$value (
mixed
) -- the value