Feature: #98521 - PSR-14 event to modify form data for edit file form
See forge#98521
Description
A new PSR-14 event \TYPO3\
has been added, which allows to modify the form data used to render the
file edit form in the File > Filelist module using
FormEngine data compiling.
The new event can be used as an improved alternative for the removed
$GLOBALS
hook.
The event features the following methods:
get
: Returns the currentForm Data () $form
arrayData set
: Sets theForm Data () $form
arrayData get
: Returns the correspondingFile () \TYPO3\
CMS\ Core\ Resource\ File Interface get
: Returns the full PSR-7Request () \Psr\
Http\ Message\ Server Request Interface
Registration of the event in your extension's Services.
:
MyVendor\MyPackage\EventListener\ModifyEditFileFormDataEventListener:
tags:
- name: event.listener
identifier: 'my-package/modify-edit-file-form-data-event-listener'
The corresponding event listener class:
use TYPO3\CMS\Filelist\Event\ModifyEditFileFormDataEvent;
final class ModifyEditFileFormDataEventListener
{
public function __invoke(ModifyEditFileFormDataEvent $event): void
{
// Get current form data
$formData = $event->getFormData();
// Change TCA "renderType" based on the file extension
$fileExtension = $event->getFile()->getExtension();
if ($fileExtension === 'ts') {
$formData['processedTca']['columns']['data']['config']['renderType'] = 'tsRenderer';
}
// Set updated form data
$event->setFormData($formData);
}
}
Impact
It is now possible to modify the whole $form
array used to generate
the edit file form in the File > Filelist module, while having the
resolved File
and the current PSR-7 Server
available.