Как создать обработчик событий маршрутизации в Symfony - PullRequest
0 голосов
/ 06 мая 2019

Я хочу знать, возможно ли выполнить код, когда сделан запрос на определенный маршрут.Недавно я научился выполнять аутентификацию с использованием аутентификаторов, которые напоминают то, что я хочу создать, но для безопасности: либо вы указываете, какие маршруты должны быть перехвачены аутентификатором в security.yml, либо вы можете сделать это вручную в методе Support ().В моем случае у меня есть маршрут «test_route», который используется для добавления новых ресурсов в базу данных (запрос POST), но я также хочу создавать пользовательские уведомления.Я мог бы просто создать объект уведомления в действии контроллера или через службу, которая вызывается в действии, но у меня есть довольно много таких случаев использования, и я хотел бы централизовать это выполнение.Я хочу знать, мог ли бы я иметь единственный файл, где я могу указать, какие маршруты будут запускать мой обработчик.

1 Ответ

0 голосов
/ 07 мая 2019

Взгляните на встроенные события Symfony . Вы можете добавить EventListener либо в kernel.request, либо в kernel.controller.

Как отметил @Jakumi в своем комментарии, возможно, имеет смысл отложить отправку уведомления, то есть сделать его асинхронным. Symfony недавно представила компонент обмена сообщениями , который поможет в этом.

Подводя итог:

  1. Добавить EventListener, слушающий одно из событий ядра.
  2. Пусть он отправит сообщение в очередь.
  3. Реализуйте обработчик, который будет отправлять это сообщение асинхронно.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...