Symfony 4: отображать flashbag после выхода из системы - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть этот веб-сайт, где пользователи должны пройти тестирование, в конце концов, у них есть доступ к результатам теста. Их можно отправить по почте, и это отправит электронное письмо, удалит записи из базы данных, отключит пользователя и перенаправит его на страницу входа.

После отключения и перенаправления на страницу входа я хочу отобразитьподтверждающее сообщение типа «Спасибо за ваше участие! Ваши результаты были только что отправлены по электронной почте».

Это то, что я написал в своей функции внутри контроллера:

$request->getSession()->getFlashBag()->add('success', 'Thanks for your participation ! ...');

return $this->redirectToRoute('app_logout');

И это то, что я написал в моем представлении (login_page)

{% for message in app.flashes('success') %}
    <div class="alert alert-warning alert-dismissible fade show" role="alert">
            {{ message }}
        <button type="button" class="close" data-dismiss="alert" aria-label="Close">
            <span aria-hidden="true">&times;</span>
        </button>
    </div>
{% endfor %}

Iпопробовал это без отключения пользователя, и это работает! Но как только я использую маршрут app_logout, невозможно отобразить флэш-мешок, потому что сеанс пользователя недоступен. Я еще не знаю, что делать, чтобы подвести итог, это мое направление:

(ПРОСМОТР) Показать результаты тестов -> (CONTROLLER) функция, которая отправляет почту / добавляет flashbag / redirect в app_logout ->(?) app_logout отключить пользователя и повторно подключиться к-> (ПРОСМОТР) странице входа, где я хочу показать мою флэш-сумку

У кого-нибудь есть представление о том, что можно сделать?

1 Ответ

0 голосов
/ 07 ноября 2019

Самым чистым решением, вероятно, будет пользовательский прослушиватель успешного завершения сеанса , который проверяет информацию, отправленную по электронной почте, в базу данных и устанавливает флэш-мешок для нового сеанса, если это применимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...