2016-04-20 3 views
0

Я пытаюсь установить флэш-сообщение, которое работает нормально, если я сделать шаблон внутри метода, например:вспышки сообщение не установлен после перенаправления

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

Однако, если я возвращаю RedirectResponse в флэш-сообщение не установлен, даже если я перенаправлять на точно такой же метод:

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

Почему это не работает, и как я могу заставить его работать?

ответ

0

Использование сеансов для отображения флэш-сообщений.

И сделайте сеанс отключенным после его вывода, а также напишите javascript, который скрывает flashmessage div.

<?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, чтобы скрыть моментальное сообщение

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

Это довольно далеко от чего я нужен, вопрос направлен на Symfony, а не на ваниль PHP –

+0

извините, для symfony у меня нет ответа. –

+0

может быть, это поможет вам. http://symfony.com/doc/current/components/http_foundation/sessions.html ИЛИ http://www.craftitonline.com/2011/07/symfony2-setting-flash-messages/ –

0

Какую версию Symfony вы используете?

Мы работаем на 2.6.1, и она работает, если вы установите его, как это перед перенаправлением:

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

Это должно работать от контроллера

$this->get('session')->getFlashBag()->add('info', 'Test'); 
Смежные вопросы