Подписчик был бы полезен, если бы логика проверки дублировалась в нескольких контроллерах. А так... Не вижу смысла делать подписчик. Я бы просто вынес проверку в отдельный метод контроллера и все.
public function redirectIfNoCategoriesFound(): ?RedirectResponse
{
if ($this->getDoctrine()->createQuery('SELECT EXISTS ...')->getSingleScalarResult()) {
$this->setFlash('message', 'Сначала вам нужно создать категорию.');
return $this->redirectToRoute('new_category');
}
}
Но проверка в контроллере как то не по фен-шую.
Почему? Какой принцип MVC/SOLID/etc. нарушается?
UPD. Если все-таки решите использовать события, лучше делайте подписчик на событие kernel.controller, чтобы узнать имя контроллера. Подробнее см.
https://symfony.com/doc/current/event_dispatcher/b...