Обычный способ добиться этого в Symfony - это прослушиватель событий Kernel.У меня есть один для события onKernelRequest
, чтобы можно было регистрировать все веб-хуки - если запрос к маршруту / URL веб-хука.
services.yml:
App\Subscribers\WebhookLoggingListener:
arguments:
# some arguments my listener needs
tags:
- { name: kernel.event_listener, event: kernel.request, method: onKernelRequest }
ЭтоЗатем вызывается для каждого запроса действия контроллера и выполняет:
public function onKernelRequest(GetResponseEvent $event): void
{
if (!$event->isMasterRequest()) {
// don't do anything if it's not the master request
return;
}
$request = $event->getRequest();
if (!$this->isWebHook($request)) {
return;
}
$this->logWebhookData($request);
}
Здесь я вижу, является ли это не webhook, и возвращаю.IsWebHook / logWebhookData можно заменить, если вам необходимо выполнить какие-либо проверки в базе данных, кэше или в любом другом месте.
Более подробная информация о прослушивателях событий ядра доступна на страницах документации Symfony .