Feature: #102755 - PSR-14 event for modifying getImageResource result¶
See forge#102755
Description¶
A new PSR-14 event \TYPO3\CMS\Frontend\ContentObject\Event\AfterImageResourceResolvedEvent
has been introduced which serves as a replacement for the now removed
hook $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_content.php']['getImgResource']
.
The event is being dispatched just before ContentObjectRenderer->getImgResource()
is about to return the resolved \TYPO3\CMS\Core\Imaging\ImageResource
DTO.
The event is therefore in comparison to the removed hook always dispatched,
even if no ImageResource
could be resolved. In this case, the
corresponding return value is null
.
Note
Instead of an array
ContentObjectRenderer
now handles
the image resource with the new ImageResource
DTO.
This means, ContentObjectRenderer->getImgResource()
returns either the new
DTO or null.
To modify the getImgResource()
result, the following methods are available:
setImageResource()
: Allows to set theImageResource
to returngetImageResource()
: Returns the resolvedImageResource
ornull
getFile()
: Returns the$file
, passed to thegetImageResource
functiongetFileArray()
: Returns the$fileArray
, passed to thegetImageResource
function
Example¶
The event listener class, using the PHP attribute #[AsEventListener]
for
registration:
use TYPO3\CMS\Core\Attribute\AsEventListener;
use TYPO3\CMS\Frontend\ContentObject\Event\AfterImageResourceResolvedEvent;
final class AfterImageResourceResolvedEventListener
{
#[AsEventListener]
public function __invoke(AfterImageResourceResolvedEvent $event): void
{
$modifiedImageResource = $event
->getImageResource()
->withWidth(123);
$event->setImageResource($modifiedImageResource);
}
}
Impact¶
Using the new PSR-14 Event, it's now possible to modify the resolved
getImageResource()
result.
Additionally, the ImageResource
DTO allows an improved API as
developers do no longer have to deal with unnamed array keys but benefit
from the object-oriented approach, using corresponding getter and setter.