重定向后未设置Flash消息


Flash message is not set after redirect

我正在尝试设置一个flash消息,如果我在方法中呈现一个模板,它可以正常工作,如下所示:

return $this->render('login/forgotten_password.html.twig', [
    'form' => $form->createView(),
]);

然而,如果我返回RedirectResponse,则即使我重定向到完全相同的方法,也不会设置闪烁消息:

return new RedirectResponse($this->generateUrl('forgotten_password', []));

为什么这不起作用,我该如何让它起作用?

您正在使用哪个版本的symfony?

我们在2.6.1上运行,如果你在重定向之前这样设置它,它就会工作:

$request->getSession()->getFlashBag()->add("success", "Test");

这应该在您的控制器上工作

$this->get('session')->getFlashBag()->add('info', 'Test');

使用会话显示flash消息。

并使会话在产生输出后取消设置,还编写了隐藏flash消息div.的javascript

<?php
if(isset($_SESSION['SUCCESS']) && !empty($_SESSION['SUCCESS'])){
    if($_SESSION['SUCCESS']=='TRUE'){
        $alert_class = 'alert-success';
    }else{
        $alert_class = 'alert-danger';
    }
    ?>
    <div class="row">
        <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
            <div class="alert <?php echo $alert_class?>" role="alert">
                <?php
                if(isset($_SESSION['MESSAGE']) && !empty($_SESSION['MESSAGE'])){
                    echo $_SESSION['MESSAGE'];
                }
                unset($_SESSION['SUCCESS']);
                unset($_SESSION['MESSAGE']);
                ?>
            </div>
        </div>
    </div>
<?php
}
?>

jQuery隐藏flash消息

setTimeout(function() {
    $('.alert').each(function () {
       if($(this).attr('role')=='alert'){
           $(this).fadeOut();
       }
    });
}, 5000);