RenderFinisherPreviewEvent
This event is dispatched once per finisher while the page module preview of a
form_ content element is rendered (in the finisher overview
provided by this extension's Form). 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
-
- Type
- string
The finisher identifier (e.g.
Emailor your ownTo Receiver My). Read-only, viaCustom Finisher get.Identifier ()
-
- Type
- array
The finisher options from the YAML form definition. Read-only, via
get.Options ()
-
- Type
- array
The finisher settings coming from the content element's FlexForm overrides. Read-only, via
get.Flex Form Finisher ()
-
- Type
- bool
Whether FlexForm overrides are enabled for this element. Read-only, via
is.Override Finishers ()
-
- Type
- string
Set via
set. Calling it marks the event as handled (Preview Html () is), so the default rendering is skipped for this finisher.Handled ()
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..
MY\MyExtension\EventListener\RenderFinisherPreviewEventListener:
tags:
- name: event.listener
identifier: 'my-extension/render-finisher-preview-event'
event: LIA\LiaForm\Event\RenderFinisherPreviewEvent