簡體   English   中英

Symfony2 FOSUserBundle FlashBag

[英]Symfony2 FOSUserBundle FlashBag

我使用FosUserBundle,我想在登錄(“您現在已連接”)和注銷(“您現在已斷開連接”)上添加一個通知(flashbag)。

我已經嘗試過使用Handler,但是在登錄時卻收到兩條消息..並且在注銷時不起作用

service.yml:

logout_service:
   class:  App\UserBundle\Service\LogoutService
   arguments: [@security.context,@session]

類:

class LogoutService implements LogoutSuccessHandlerInterface {
    private $security;
    private $session;

    public function __construct(SecurityContext $security,Session $session) 
    {
        $this->security = $security;
        $this->session = $session;
    }

    public function onLogoutSuccess(Request $request) 
    {
        $this->session->getFlashBag()->add('notice, 'You're now disconnected.');
        return new RedirectResponse('app');
    }
}

在我的布局中:

{% for flashMessage in app.session.flashbag.get('notice') %}
    <div class="alert alert-success alert-dismissible">
        <button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
        {{ flashMessage }}
    </div>
{% endfor %}

我已經對該主題進行了任何研究。但是我沒有找到正確的答案。

你能解釋一下我該怎么辦嗎?

您的解決方案是正確的,但是默認情況下,注銷過程會使用戶的會話無效。 因此,不會顯示您的Flash消息。 您需要在security.yml中設置invalidate_session: false

logout:
    path: /logout
    target: /
    invalidate_session: false
    success_handler: logout_service

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM