AfterSlugGeneratedEvent

The PSR-14 event \OliverKlee\Seminars\Seo\Event\AfterSlugGeneratedEvent 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.yaml:

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'
Copied!

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());
        }
    }
}
Copied!