<?php
declare(strict_types=1);
namespace App\Listener;
use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityDeletedEvent;
use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityPersistedEvent;
use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityUpdatedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Translation\TranslatableMessage;
final class EasyAdminListener implements EventSubscriberInterface {
private $session;
public function __construct(SessionInterface $session) {
$this->session = $session;
}
public static function getSubscribedEvents(): array {
return [
AfterEntityPersistedEvent::class => ['flashMessageAfterPersist'],
AfterEntityUpdatedEvent::class => ['flashMessageAfterUpdate'],
AfterEntityDeletedEvent::class => ['flashMessageAfterDelete'],
];
}
public function flashMessageAfterPersist(AfterEntityPersistedEvent $event): void {
$this->session->getFlashBag()->add('success', new TranslatableMessage('content_admin.flash_message.create', [
'%name%' => (string) $event->getEntityInstance(),
], 'admin'));
}
public function flashMessageAfterUpdate(AfterEntityUpdatedEvent $event): void {
$this->session->getFlashBag()->add('warning', new TranslatableMessage('content_admin.flash_message.update', [
'%name%' => (string) $event->getEntityInstance(),
], 'admin'));
}
public function flashMessageAfterDelete(AfterEntityDeletedEvent $event): void {
$this->session->getFlashBag()->add('danger', new TranslatableMessage('content_admin.flash_message.delete', [
'%name%' => (string) $event->getEntityInstance(),
], 'admin'));
}
}