2016-12-09 5 views
2

В Symfony после успешного выхода из системы, как отобразить успешное сообщение типа «вы успешно вышли из системы»?Symfony: как отобразить сообщение об успешном завершении после выхода из системы

+0

был быстрый ответ сами :) – Blueblazer172

+0

Я только что провел немного времени, чтобы выяснить, самый простой способ сделать это, то я подумал, что это достойно поделиться: D – ShinDarth

+0

Спасибо, чувак, вы тоже можете добавить его в документацию переполнения стека:] – goto

ответ

4

1) Создайте новый сервис для обработки события успешного выхода из системы.

В services.yml добавить службу:

logout_success_handler: 
    class: Path\To\YourBundle\Services\LogoutSuccessHandler 
    arguments: ['@security.http_utils'] 

И добавить класс, заменив /path/to/your/login с URL вашей страницы входа в систему (в последней строке контроллера):

<?php 

namespace Path\To\YourBundle\Services; 

use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\Security\Http\HttpUtils; 
use Symfony\Component\Security\Http\Logout\LogoutSuccessHandlerInterface; 

class LogoutSuccessHandler implements LogoutSuccessHandlerInterface 
{ 
    protected $httpUtils; 
    protected $targetUrl; 

    /** 
    * @param HttpUtils $httpUtils 
    */ 
    public function __construct(HttpUtils $httpUtils) 
    { 
     $this->httpUtils = $httpUtils; 

     $this->targetUrl = '/path/to/your/login?logout=success'; 
    } 

    /** 
    * {@inheritdoc} 
    */ 
    public function onLogoutSuccess(Request $request) 
    { 
     $response = $this->httpUtils->createRedirectResponse($request, $this->targetUrl); 

     return $response; 
    } 
} 

2) Настройте свой security.yml, чтобы использовать пользовательские настройки LogoutSuccessHandler:

firewalls: 
    # ... 
    your_firewall: 
     # ... 
     logout: 
      # ... 
      success_handler: logout_success_handler 

3) В шаблоне веточку вашей странице входа в систему добавить:

{% if app.request.get('logout') == "success" %} 
    <p>You have successfully logged out!</p> 
{% endif %}