Bonjour à tous,
Avec symfony 6.3 et php 8.2
J'ai crée un évènement personnalisé*:
use Symfony\Contracts\EventDispatcher\Event;
class MyEvent extends Event
{
private $message;
public function __construct(string $message)
{
$this->message = $message;
}
public function getMessage(): string
{
return $this->message;
}
}
un controller chargé de déclencher l'évènement:
namespace App\Controller;
use App\Event\MyEvent;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class MyController extends AbstractController
{
#[Route("/test")]
public function myAction(EventDispatcherInterface $dispatcher):Response
{
// Créez une instance de votre événement
$event = new MyEvent('Hello, world!');
// Déclenchez votre événement
$dispatcher->dispatch($event);
return new Response($event->getMessage());
}
}
Un écouteur:
namespace App\EventListener;
use App\Event\MyEvent;
use Psr\Log\LoggerInterface;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class MyListener
{
private $logger;
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
public function onMyEvent(MyEvent $event)
{
// Récupérez le message de l'événement et enregistrez-le dans les journaux
//$this->logger->info($event->getMessage());
var_dump("ok");
}
}
Enfin enregistré le service en tant qu'écouteur dans services.yaml
App\EventListener\MyListener:
tags:
- { name: kernel.event_listener, event: my.event, method: onMyEvent }
Le résultat m'affiche "Hello world" (c'est logique) mais à aucun moment je n'affiche "ok". J'ai l'impression que la méthode onMyEvent n'est jamais appelée.
Je suis débutant, pouvez-vous m'aider svp.
Partager