BeforeRenderableIsValidatedEvent 

New in version 14.0

The event BeforeRenderableIsValidatedEvent is a replacement for the removed hook $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['ext/form']['afterSubmit'] .

The event BeforeRenderableIsValidatedEvent is dispatched just before a renderable is validated. This event allows a renderable to add custom logic before it is validated.

Example 

EXT:my_extension/Classes/EventListener/MyEventListener.php
<?php

declare(strict_types=1);

namespace MyVendor\MyExtension\EventListener;

use TYPO3\CMS\Core\Attribute\AsEventListener;
use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Extbase\Validation\Error;
use TYPO3\CMS\Form\Event\BeforeRenderableIsValidatedEvent;
use TYPO3\CMS\Form\Service\TranslationService;

final readonly class MyEventListener
{
  #[AsEventListener(
    identifier: 'my-extension/before-renderable-is-validate',
  )]
  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'];
  }
}
Copied!

API 

class BeforeRenderableIsValidatedEvent
Fully qualified name
\TYPO3\CMS\Form\Event\BeforeRenderableIsValidatedEvent

Listeners to this event can add custom validation logic.

public renderable
public formRuntime
public value
public request