@ArtemioVegas
php developer

Symfony, редирект пользователя в случае отсутствия какой либо информации в БД?

Приветствую всех!
Ситуация следующая, В контроллере есть экшн, в котором форма для создания задачи. Одним из полей формы является "Категория" - выпадающий список из сущности Категория.
Сейчас у меня проверка в контроллере (обращаемся запросом в БД и проверяем существуют ли у него категории), что, если у пользователя нет созданных категорий, то редиректим его создавать категорию.
Но проверка в контроллере как то не по фен-шую.
Хочу сделать listener/subscriber для этого, подскажите на какое событие подписаться?kernel.request?
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
voronkovich
@voronkovich
Подписчик был бы полезен, если бы логика проверки дублировалась в нескольких контроллерах. А так... Не вижу смысла делать подписчик. Я бы просто вынес проверку в отдельный метод контроллера и все.

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...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы