<?php
// src/EventListener/CleanFlashMessageListener.php
namespace App\EventListener;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
class CleanFlashMessageListener
{
private SessionInterface $session;
public function __construct(SessionInterface $session) {
$this->session = $session;
}
public function onKernelRequest(RequestEvent $event): void
{
if (!$event->isMainRequest()) {
return;
}
$flashBag = $this->session->getFlashBag();
// get message without consume
$successMessages = $flashBag->peek('success');
if (!$successMessages) {
return;
}
// delete fos_user_success message
$filtered = array_filter($successMessages, fn($msg) => $msg !== "L'utilisateur a été créé avec succès.");
if (count($filtered) !== count($successMessages)) {
$flashBag->get('success'); // consume all success messages for delete
foreach ($filtered as $msg) {
$flashBag->add('success', $msg); // re inject others messages
}
}
}
}