AfterSlugGeneratedEvent
The PSR-14 event
\Oliver
gets triggered after a slug has been generated or updated for an event record,
and before the slug gets written to the database.
Listeners may overwrite the slug if desired.
Example
Registration of the event listener in the extension's Services.
:
EXT:my_extension/Configuration/Services.yaml
services:
# Place here the default dependency injection configuration
MyVendor\MyExtension\EventListener\Seo\SlugGeneratorEventListener:
tags:
- name: event.listener
identifier: 'generate-event-slugs-with-underscore'
The corresponding event listener class:
EXT:my_extension/Classes/EventListener/Seo/SlugGeneratorEventListener.php
<?php
declare(strict_types=1);
namespace MyVendor\MyExtension\EventListener\Seo;
use OliverKlee\Seminars\Seo\Event\AfterSlugGeneratedEvent;
/**
* Generates event slugs in the format "slugified-title_uid".
*/
final class SlugGeneratorEventListener
{
public function __invoke(AfterSlugGeneratedEvent $event): void
{
$slugContext = $event->getSlugContext();
if ($slugContext->getEventUid() > 0) {
$event->setSlug($slugContext->getSlugifiedTitle() . '_' . $slugContext->getEventUid());
}
}
}