---
title: "PSR-14 event"
manual: "Form Rate Limit"
version: "main"
permalink: "https://docs.typo3.org/permalink/brotkrueml/typo3-form-rate-limit:events@main"
source: "Events/Index.rst"
rendered: "2026-09-23T15:53:26+00:00"
---

# PSR-14 event {#events}

Target group: **Developers**

Have a look into the [event dispatcher documentation](https://docs.typo3.org/m/typo3/reference-coreapi/14.3/en-us/ApiOverview/Events/EventDispatcher/Index.html#EventDispatcher),
if you are not familiar with PSR-14 events.

## RateLimitExceededEvent {#ratelimitexceededevent}

This event is dispatched when the rate limit for a form has been exceeded. This
way you can create an event listener which notifies you about the exceeded
limit: add a log entry, send an email, inform a third-party system, etc.

The event `\Brotkrueml\FormRateLimit\Event\RateLimitExceededEvent`
provides the following methods:

-   **`->getFormIdentifier(): string`**

    Returns the form identifier.

-   **`->getInterval(): string`**

    Returns the configured [interval](https://docs.typo3.org/permalink/brotkrueml/typo3-form-rate-limit:options-interval@main).

-   **`->getLimit(): int`**

    Returns the configured [limit](https://docs.typo3.org/permalink/brotkrueml/typo3-form-rate-limit:options-limit@main).

-   **`->getPolicy(): string`**

    Returns the configured [policy](https://docs.typo3.org/permalink/brotkrueml/typo3-form-rate-limit:options-policy@main).

-   **`->getRequest(): \Psr\Http\Message\ServerRequestInterface`**

    Returns the [PSR-7 request object](https://docs.typo3.org/m/typo3/reference-coreapi/14.3/en-us/ApiOverview/RequestLifeCycle/Typo3Request.html#typo3-request).

### Example {#example}

This example adds an entry to the TYPO3 log:

**EXT:your_extension/Classes/EventListener/FormRateLimitExceededLogger.php**

```php
<?php

declare(strict_types=1);

namespace YourVendor\YourExtension\EventListener;

use Brotkrueml\FormRateLimit\Event\RateLimitExceededEvent;
use Psr\Log\LoggerInterface;
use TYPO3\CMS\Core\Attribute\AsEventListener;

#[AsEventListener(
    identifier: 'your-extension/form-rate-limit-exceeded-logger',
)]
final readonly class FormRateLimitExceededLogger
{
    public function __construct(
        private LoggerInterface $logger,
    ) {}

    public function __invoke(RateLimitExceededEvent $event): void
    {
        $this->logger->warning(
            'The form with identifier "{formIdentifier}" was sent more than {limit} times within {interval}',
            [
                'formIdentifier' => $event->getFormIdentifier(),
                'limit' => $event->getLimit(),
                'interval' => $event->getInterval(),
            ],
        );
    }
}

```
