Deprecation: #94317 - ext:form Finisher implementations¶
See Issue #94317
In preparation of the extbase ObjectManager deprecation in favor of symfony dependency injection, some details of ext:form finishers had to be adapted: In contrast to extbase object management, symfony DI does not support prototype classes with a mixture of manual constructor arguments, plus dependency injection via other constructor arguments or inject* methods.
The ext:form finishers based on
relied on this and had to be adapted: The default constructor argument
$finisherIdentifier has been dropped, so finisher implementations can
keep using dependency injection.
A compatibility layer detects not adapted finishers and falls back to initialization using extbase ObjectManager. This will raise a deprecation log level entry and will stop working in core v12.
In general only instances with custom form based on ext:form are affected, and only if they implement custom finishers.
Most custom finishers probably extend
Those are only affected if they override
__construct() or use or manipulate
injectObject() methods. This is rather unlikely.
Custom finished that do not extend
Custom finishers should extend
If they must implement
__construct(), they should not expect
to be hand over as first argument and must not call
Custom finishers must not rely on
being set in early methods like
and must not set these properties.
Custom finishers must implement method
setFinisherIdentifier(), this method will
be added to
TYPO3\CMS\Form\Domain\Finishers\FinisherInterface in core v12.
Custom finishers must not use class property
$objectManager since this will vanish
in v12. This will affect more API cases and will have a dedicated deprecation file
with more details, tough.