Используя Symfony 2.6, я ищу лучший способ добавить флеш-сообщение при входе/выходе из системы в моем приложении. Я точно знаю, что в каждом случае я не хочу изменять ответ (мне не нужно).Symfony 2: Flash-сообщение при входе/выходе
Вот мои решения:
Логин:
1. Первое решение:
можно использовать событие security.interactive_login или событие security.authentication.success. В обоих случаях я могу реализовать слушателя, чтобы добавить флэш-сообщение, когда происходит событие.
2. Второе решение:
Я могу создать свой собственный LoginSuccessHandler, реализующий AuthenticationSuccessHandlerInterface, но в этом случае я должен возвратить ответ. Более того, я не знаком с этим методом, и я боюсь перезаписать обработчик успеха по умолчанию. Это верно ?
Выход:
Я могу создать LogoutListener, который реализует LogoutHandlerInterface. В этом случае я также боюсь перезаписать обработчик выхода из системы defaut.
Благодарим вас за ваши предложения.
Спасибо, но я не understa и ваше предложение. Я эффективно использую FOSUserBundle. В этом пакете есть семь предопределенных флеш-сообщений, в зависимости от разных событий [(FlashListener.php)] (https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/EventListener/FlashListener.php). Можете ли вы объяснить мне, где в приложении вы добавляете флеш-сообщение? Моя цель - только сообщить пользователю, что он сейчас подключен или отключен. Все флэш-сообщения отображаются в моем макете. – Cruz
Вы можете добавить услугу, которая перехватывает события [FOSUser events] (https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/EventListener/LastLoginListener.php) - добавьте один, который добавит флешку после того, как onImplicitLogin будет успешным и где угодно пользователь идет, флэш-сообщение появится после входа в систему. Должен быть один для выхода из системы, но я не уверен, где он находится в документах. Вы можете подключиться к [контроллеру здесь] (https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/controller_events.md) для контроллеров, которые передают события. – George
@George Я уже создал дополнительный прослушиватель, который добавляет флэш-сообщение после успешного входа (используя событие security.interactive_login, но он должен работать с использованием события fos_user.security.implicit_login). Он работает нормально. Я не думаю, что существует событие выхода из системы. Даже в symfony 2.Я подключаюсь к контроллерам, как описано в документации, но для перенаправления ответа. – Cruz