BeforeRedirectMatchDomainEvent
New in version 12.3
The PSR-14 event
\TYPO3\
allows extensions to implement a custom redirect matching upon the loaded
redirects or return the matched redirect record from other sources.
Note
The full sys_
record must be set using the
set
method. Otherwise the Core code would fail
later, as it expects, for example, the uid of the record to set the
X-
response header. Therefore, the get
method returns null or a full sys_
record.
Note
The Before
is dispatched before cached
redirects are retrieved. That means, that the event does not contain any
sys_
records. The internal redirect cache may vanish
eventually, if possible. Therefore, it is left out to avoid a longer bound
state to the event by properly deprecate it.
Example
Registration of the event listener in the extension's Services.
:
services:
# Place here the default dependency injection configuration
MyVendor\MyExtension\Redirects\EventListener\MyEventListener:
tags:
- name: event.listener
identifier: 'my-extension/before-redirect-match-domain'
Read how to configure dependency injection in extensions.
The corresponding event listener class:
<?php
declare(strict_types=1);
namespace MyVendor\MyExtension\Redirects\EventListener;
use TYPO3\CMS\Backend\Utility\BackendUtility;
use TYPO3\CMS\Redirects\Event\BeforeRedirectMatchDomainEvent;
final class MyEventListener
{
public function __invoke(BeforeRedirectMatchDomainEvent $event): void
{
$matchedRedirectRecord = $this->customRedirectMatching($event);
if ($matchedRedirectRecord !== null) {
$event->setMatchedRedirect($matchedRedirectRecord);
}
}
private function customRedirectMatching(BeforeRedirectMatchDomainEvent $event): ?array
{
// @todo Implement custom redirect record loading and matching. If
// a redirect based on custom logic is determined, return the
// :sql:`sys_redirect` tables conform redirect record.
// Note: Below is simplified example code with no real value.
$record = BackendUtility::getRecord('sys_redirect', 123);
// Do custom matching logic against the record and return matched
// record - if there is one.
if ($record /* && custom condition against the record */) {
return $record;
}
// Return null to indicate that no matched redirect could be found
return null;
}
}
API
- class BeforeRedirectMatchDomainEvent
-
- Fully qualified name
-
\TYPO3\
CMS\ Redirects\ Event\ Before Redirect Match Domain Event
This event is fired in TYPO3CMSRedirectsServiceRedirectService->matchRedirect() for checked host and wildcard host "*".
It can be used to implement a custom match method, returning a matchedRedirect record with eventually enriched record data.
- getMatchDomainName ( )
-
- Return description
-
Domain name which should be checked, and
get
items are provided forRedirects ()
- Returns
-
string