Events
The extension dispatches three PSR-14 events during the rendering pipeline.
BeforeTemplateCompilationEvent
Dispatched immediately before a template is compiled. The event provides read-only access to the rendering context and the renderer. Use it to inspect the context (e.g., to log which template is about to be rendered) or to trigger additional rendering via the renderer:
EXT:my_extension/Classes/EventListener/BeforeTemplateCompilationListener.php
namespace Vendor\Extension\EventListener;
use CPSIT\Typo3Handlebars\Event\BeforeTemplateCompilationEvent;
final readonly class BeforeTemplateCompilationListener
{
public function __invoke(BeforeTemplateCompilationEvent $event): void
{
$context = $event->getContext(); // RenderingContext
$renderer = $event->getRenderer(); // Renderer
}
}
Copied!
BeforeRenderingEvent
Dispatched after variables have been resolved and merged, immediately before the compiled template is executed. The full variable set can be read and modified:
EXT:my_extension/Classes/EventListener/BeforeRenderingListener.php
namespace Vendor\Extension\EventListener;
use CPSIT\Typo3Handlebars\Event\BeforeRenderingEvent;
final readonly class BeforeRenderingListener
{
public function __invoke(BeforeRenderingEvent $event): void
{
// Add a variable
$event->addVariable('timestamp', time());
// Replace the entire variable set
$variables = $event->getVariables();
$variables['title'] = strtoupper($variables['title'] ?? '');
$event->setVariables($variables);
// Remove a variable
$event->removeVariable('internalFlag');
}
}
Copied!
Available methods:
get/Variables () set— get or replace the full variable setVariables (array $variables) add— add or overwrite a single variableVariable (string $name, mixed $value) remove— remove a variable by nameVariable (string $name) get— theContext () Rendering(read-only)Context get— theRenderer () Renderer(read-only)
AfterRenderingEvent
Dispatched after the template has been fully rendered. The rendered HTML string can be read and replaced:
EXT:my_extension/Classes/EventListener/AfterRenderingListener.php
namespace Vendor\Extension\EventListener;
use CPSIT\Typo3Handlebars\Event\AfterRenderingEvent;
final readonly class AfterRenderingListener
{
public function __invoke(AfterRenderingEvent $event): void
{
$content = $event->getContent();
$event->setContent(trim($content));
}
}
Copied!
Available methods:
get/Content () set— get or replace the rendered outputContent (string $content) get— theContext () Rendering(read-only)Context get— theRenderer () Renderer(read-only)