В Symfony после успешного выхода из системы, как отобразить успешное сообщение типа «вы успешно вышли из системы»?Symfony: как отобразить сообщение об успешном завершении после выхода из системы
2
A
ответ
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 %}
был быстрый ответ сами :) – Blueblazer172
Я только что провел немного времени, чтобы выяснить, самый простой способ сделать это, то я подумал, что это достойно поделиться: D – ShinDarth
Спасибо, чувак, вы тоже можете добавить его в документацию переполнения стека:] – goto