2015-02-09 3 views
2

Используя Symfony 2.6, я ищу лучший способ добавить флеш-сообщение при входе/выходе из системы в моем приложении. Я точно знаю, что в каждом случае я не хочу изменять ответ (мне не нужно).Symfony 2: Flash-сообщение при входе/выходе

Вот мои решения:

Логин:

1. Первое решение:

можно использовать событие security.interactive_login или событие security.authentication.success. В обоих случаях я могу реализовать слушателя, чтобы добавить флэш-сообщение, когда происходит событие.

2. Второе решение:

Я могу создать свой собственный LoginSuccessHandler, реализующий AuthenticationSuccessHandlerInterface, но в этом случае я должен возвратить ответ. Более того, я не знаком с этим методом, и я боюсь перезаписать обработчик успеха по умолчанию. Это верно ?

Выход:

Я могу создать LogoutListener, который реализует LogoutHandlerInterface. В этом случае я также боюсь перезаписать обработчик выхода из системы defaut.

Благодарим вас за ваши предложения.

ответ

0

Используйте FOSUserBundle Войти/выход из системы логики и т.д. уже реализовано ...
Таким образом вы будете иметь possibilty, чтобы показать ошибки на Логин проверочного редиректа:

Чтобы сделать это, вы должны вернуть ошибку веточки

$session->getFlashBag()->add('error', 'Error message'); 

И в веточке вам нужен блок, как это, чтобы показать ошибки, если сессия проведение любого:

{% block flashes %} 
    {% if app.session.flashbag.peekAll|length > 0 %} 
     {{ session_flash() }} 
    {% endif %} 
{% endblock flashes %} 
+0

Спасибо, но я не understa и ваше предложение. Я эффективно использую FOSUserBundle. В этом пакете есть семь предопределенных флеш-сообщений, в зависимости от разных событий [(FlashListener.php)] (https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/EventListener/FlashListener.php). Можете ли вы объяснить мне, где в приложении вы добавляете флеш-сообщение? Моя цель - только сообщить пользователю, что он сейчас подключен или отключен. Все флэш-сообщения отображаются в моем макете. – Cruz

+0

Вы можете добавить услугу, которая перехватывает события [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

+0

@George Я уже создал дополнительный прослушиватель, который добавляет флэш-сообщение после успешного входа (используя событие security.interactive_login, но он должен работать с использованием события fos_user.security.implicit_login). Он работает нормально. Я не думаю, что существует событие выхода из системы. Даже в symfony 2.Я подключаюсь к контроллерам, как описано в документации, но для перенаправления ответа. – Cruz

Смежные вопросы