Вы пытаетесь вызвать вспомогательный метод контроллера из слушателя.Как сказал @ArtisticPhoenix в комментариях, это запрещено.Здесь вы можете вместо этого переписать ваш слушатель, чтобы использовать не метод контроллера (который просто предназначен для поддержки ваших действий), а реальный метод маршрутизатора, который генерирует URL.Посмотрите на Controller
(или ControllerTrait
в зависимости от вашей версии Symfony).Метод generateUrl()
вызывает сервис @router
:
/**
* Generates a URL from the given parameters.
*
* @see UrlGeneratorInterface
*
* @final
*/
protected function generateUrl(string $route, array $parameters = [], int $referenceType = UrlGeneratorInterface::ABSOLUTE_PATH): string
{
return $this->container->get('router')->generate($route, $parameters, $referenceType);
}
Это то, что вам нужно использовать вместо вызова метода контроллера.Вы можете попробовать что-то вроде этого:
$this_url = $this->container->get('router')->generate($event->getRequest()->get('_route'), $event->getRequest()->get('_route_params'));
Хотя, вам нужно убедиться, что у вас есть доступный контейнер (что в целом не является хорошим шаблоном), или вы передаете Router
вваш сервис как зависимость.Таким образом, вы измените $this->container->get('router')
на опору, в которую вы вводите маршрутизатор.