после входа в систему я хочу, чтобы пользователь перенаправлялся на страницу, такую как опрос, поэтому он/она не может делать или переходить в другое меню, если он/она не сделал этого опроса.
Этот опрос поступает из базы данных, которая зависит от временного диапазона.
Если я поставил каждый контроллер, чтобы проверить, прошел ли пользователь опрос или нет, и перенаправление на страницу, разве это не эффективно?
И если я ставлю его после контроллера входа, пользователь может щелкнуть меню или указать на другую маршрутизацию, чтобы пройти этот опрос.
Более простым решением было бы перенаправить пользователя на определенное действие после успешного входа. Эти действия возвратят пользователя на главную страницу или страницу опроса в зависимости от того, какое условие вы предпочитаете устанавливать. Таким образом, это действие можно рассматривать как точку входа пользователя в систему. Затем, используя диспетчер событий kernel.controller, проверьте это действие для каждого запроса.
Вам нужно реализовать прослушиватель kernel.controller
чтобы проверить какое-то условие на каждый запрос. Это будет правильный путь. Вам нужно будет только определить его в одном месте.
Вы можете прочитать об этом подходе в официальных документах: http://symfony.com/doc/current/cookbook/event_dispatcher/before_after_filters.html