---
title: "Feature: #107568 - PSR-14 event before renderable is validated"
manual: "TYPO3 Core Changelog"
version: "main"
permalink: "https://docs.typo3.org/permalink/changelog:feature-107568-1759326362"
source: "Changelog/14.0/Feature-107568-IntroducePSR14BeforeRenderableIsValidatedEvent.rst"
typo3-version: "14.0"
typo3-major: 14
type: "feature"
issue: 107568
forge: "https://forge.typo3.org/issues/107568"
tags: ["Backend", "ext:form"]
rendered: "2026-09-20T18:31:11+00:00"
---

# Feature: #107568 - PSR-14 event before renderable is validated {#feature-107568-1759326362}

See [forge#107568](https://forge.typo3.org/issues/107568)

## Description {#description}

A new PSR-14 event `BeforeRenderableIsValidatedEvent`
has been introduced. It serves as an improved replacement for the now
[removed](https://docs.typo3.org/permalink/changelog:breaking-107568-1759325068) hook
`$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['afterSubmit']`.

The new event is dispatched right before a renderable is validated.

The event provides the following public properties:

-   `$value`: The submitted value of the renderable.
-   `$formRuntime`: The form runtime object (read-only).
-   `$renderable`: The renderable (read-only).
-   `$request`: The current request (read-only).

## Example {#example}

An example event listener could look like this:

**Example event listener class**

```php
use TYPO3\CMS\Core\Attribute\AsEventListener;
use TYPO3\CMS\Core\Error\Error;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Core\Localization\TranslationService;
use TYPO3\CMS\Form\Event\BeforeRenderableIsValidatedEvent;

final class BeforeRenderableIsValidatedEventListener
{
    #[AsEventListener('my-extension/before-renderable-is-validated')]
    public function __invoke(BeforeRenderableIsValidatedEvent $event): void
    {
        $renderable = $event->renderable;
        if ($renderable->getType() !== 'AdvancedPassword') {
            return;
        }

        $elementValue = $event->value;
        if ($elementValue['password'] !== $elementValue['confirmation']) {
            $processingRule = $renderable
                ->getRootForm()
                ->getProcessingRule($renderable->getIdentifier());

            $processingRule->getProcessingMessages()->addError(
                GeneralUtility::makeInstance(
                    Error::class,
                    GeneralUtility::makeInstance(TranslationService::class)->translate('validation.error.1556283177', null, 'EXT:form/Resources/Private/Language/locallang.xlf'),
                    1556283177
                )
            );
        }

        $event->value = $elementValue['password'];
    }
}
```

## Impact {#impact}

With the new `BeforeRenderableIsValidatedEvent`,
it is now possible to modify or validate the value of a renderable element
before TYPO3 Core performs its built-in validation logic. This allows
extensions to inject custom validation rules or preprocessing steps before
standard validation runs.
