RenderFinisherPreviewEvent
This event is dispatched once per finisher while the page module preview of a
form_formframework content element is rendered (in the finisher overview
provided by this extension's FormPreviewRenderer). It lets an extension
supply a custom preview for its own finisher types. If a listener handles the
event, its HTML is used and the built-in rendering for that finisher is
skipped.
Attributes
identifier
-
- Type
- string
The finisher identifier (e.g.
EmailToReceiveror your ownMyCustomFinisher). Read-only, viagetIdentifier().
options
-
- Type
- array
The finisher options from the YAML form definition. Read-only, via
getOptions().
flexFormFinisher
-
- Type
- array
The finisher settings coming from the content element's FlexForm overrides. Read-only, via
getFlexFormFinisher().
overrideFinishers
-
- Type
- bool
Whether FlexForm overrides are enabled for this element. Read-only, via
isOverrideFinishers().
previewHtml
-
- Type
- string
Set via
setPreviewHtml(). Calling it marks the event as handled (isHandled()), so the default rendering is skipped for this finisher.
Subscribe this event
Create an EventListener in your extension that reacts to your own finisher identifier and returns its preview markup.
<?php
declare(strict_types=1);
namespace MY\MyExtension\EventListener;
use LIA\LiaForm\Event\RenderFinisherPreviewEvent;
final class RenderFinisherPreviewEventListener
{
public function __invoke(RenderFinisherPreviewEvent $event): void
{
if ($event->getIdentifier() !== 'MyCustomFinisher') {
return;
}
$options = $event->getOptions();
$event->setPreviewHtml(
'<em>My custom finisher → ' . htmlspecialchars((string)($options['target'] ?? '')) . '</em>'
);
}
}
Register the listener in your Services.yaml.
MY\MyExtension\EventListener\RenderFinisherPreviewEventListener:
tags:
- name: event.listener
identifier: 'my-extension/render-finisher-preview-event'
event: LIA\LiaForm\Event\RenderFinisherPreviewEvent