From 802b0f02176fbbd9889625cc4bb28640e3ac515c Mon Sep 17 00:00:00 2001 From: Sarah McCarthy Date: Mon, 27 Oct 2025 13:19:15 +0100 Subject: [PATCH] [FEATURE] Add PSR-14 Event before renderable removed #1337 Resolves: https://github.com/TYPO3-Documentation/Changelog-To-Doc/issues/1337 Releases: main --- ...BeforeRenderableIsRemovedFromFormEvent.rst | 37 +++++++++++++++++++ .../_MyEventListener.php | 21 +++++++++++ .../Config/Api/Events/EventsForm.php | 6 +++ ...reRenderableIsRemovedFromFormEvent.rst.txt | 16 ++++++++ 4 files changed, 80 insertions(+) create mode 100644 Documentation/ApiOverview/Events/Events/Form/BeforeRenderableIsRemovedFromFormEvent.rst create mode 100644 Documentation/ApiOverview/Events/Events/Form/_BeforeRenderableIsRemovedFromFormEvent/_MyEventListener.php create mode 100644 Documentation/CodeSnippets/Events/Form/BeforeRenderableIsRemovedFromFormEvent.rst.txt diff --git a/Documentation/ApiOverview/Events/Events/Form/BeforeRenderableIsRemovedFromFormEvent.rst b/Documentation/ApiOverview/Events/Events/Form/BeforeRenderableIsRemovedFromFormEvent.rst new file mode 100644 index 0000000000..5b27b193ee --- /dev/null +++ b/Documentation/ApiOverview/Events/Events/Form/BeforeRenderableIsRemovedFromFormEvent.rst @@ -0,0 +1,37 @@ +.. include:: /Includes.rst.txt +.. index:: Events; BeforeRenderableIsRemovedFromFormEvent + +.. _BeforeRenderableIsRemovedFromFormEvent: + +====================================== +BeforeRenderableIsRemovedFromFormEvent +====================================== + +.. versionadded:: 14.0 + The event :php-short:`TYPO3\CMS\Form\Event\BeforeRenderableIsRemovedFromFormEvent` + is an improved replacement for the removed hook + :php:`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['beforeRemoveFromParentRenderable']`. + +The event :php-short:`TYPO3\CMS\Form\Event\BeforeRenderableIsRemovedFromFormEvent` +is dispatched just before a renderable is deleted from a form. It is now +possible to prevent the deletion of a renderable and to add custom logic +based on the deletion. + +The event is stoppable. As soon as :php:`$preventRemoval` is set to +:php:`true`, no other listener is called. + + +.. _BeforeRenderableIsRemovedFromFormEvent-example: + +Example +======= + +.. literalinclude:: _BeforeRenderableIsRemovedFromFormEvent/_MyEventListener.php + :caption: EXT:my_extension/Classes/EventListener/MyEventListener.php + +.. _BeforeRenderableIsRemovedFromFormEvent-api: + +API +=== + +.. include:: /CodeSnippets/Events/Form/BeforeRenderableIsRemovedFromFormEvent.rst.txt diff --git a/Documentation/ApiOverview/Events/Events/Form/_BeforeRenderableIsRemovedFromFormEvent/_MyEventListener.php b/Documentation/ApiOverview/Events/Events/Form/_BeforeRenderableIsRemovedFromFormEvent/_MyEventListener.php new file mode 100644 index 0000000000..6522c8247c --- /dev/null +++ b/Documentation/ApiOverview/Events/Events/Form/_BeforeRenderableIsRemovedFromFormEvent/_MyEventListener.php @@ -0,0 +1,21 @@ +preventRemoval = true; + $renderable = $event->renderable; + // Do something with the renderable + } +} diff --git a/Documentation/CodeSnippets/Config/Api/Events/EventsForm.php b/Documentation/CodeSnippets/Config/Api/Events/EventsForm.php index bf191e1162..96fce55509 100644 --- a/Documentation/CodeSnippets/Config/Api/Events/EventsForm.php +++ b/Documentation/CodeSnippets/Config/Api/Events/EventsForm.php @@ -25,6 +25,12 @@ 'targetFileName' => 'CodeSnippets/Events/Form/BeforeRenderableIsAddedToFormEvent.rst.txt', 'withCode' => false, ], + [ + 'action' => 'createPhpClassDocs', + 'class' => \TYPO3\CMS\Form\Event\BeforeRenderableIsRemovedFromFormEvent::class, + 'targetFileName' => 'CodeSnippets/Events/Form/BeforeRenderableIsRemovedFromFormEvent.rst.txt', + 'withCode' => false, + ], [ 'action' => 'createPhpClassDocs', 'class' => \TYPO3\CMS\Form\Event\BeforeFormIsDuplicatedEvent::class, diff --git a/Documentation/CodeSnippets/Events/Form/BeforeRenderableIsRemovedFromFormEvent.rst.txt b/Documentation/CodeSnippets/Events/Form/BeforeRenderableIsRemovedFromFormEvent.rst.txt new file mode 100644 index 0000000000..ddca8bbf8d --- /dev/null +++ b/Documentation/CodeSnippets/Events/Form/BeforeRenderableIsRemovedFromFormEvent.rst.txt @@ -0,0 +1,16 @@ +.. Generated by https://github.com/TYPO3-Documentation/t3docs-codesnippets +.. php:namespace:: TYPO3\CMS\Form\Event + +.. php:class:: BeforeRenderableIsRemovedFromFormEvent + + Listeners to this event will be able to prevent deletion of the renderable (form element) and to add custom logic based on the deletion. + + .. php:attr:: renderable + :public: + + The form element (readonly) + + .. php:attr:: preventRemoval + :public: + + A boolean flag that can be set to true to prevent removal of the renderable.