2016-04-20 7 views
0

Ich versuche, eine Flash-Mitteilung zu setzen, was in Ordnung ist, zu arbeiten, wenn ich eine Vorlage innerhalb der Methode machen, wie folgt aus:Flash-Mitteilung wird nicht nach umleiten gesetzt

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

Wenn ich jedoch eine RedirectResponse die Rückkehr Flash-Mitteilung wird nicht, auch wenn ich auf genau die gleiche Methode umleiten:

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

Wie kommt dies nicht funktioniert, und wie mache ich das?

Antwort

0

Verwenden Sie Sitzungen für die Flash-Nachrichtenanzeige.

Und machen Sie Sitzung nicht gesetzt, nachdem es Ausgabe produzieren, und schreiben Sie auch Javascript, die Flashmessage Div versteckt.

<?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-Mitteilung zu verstecken

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

Das ist ziemlich weit von dem, was ich brauchen, ist die Frage auf Symfony gerichtet, nicht Vanille PHP –

+0

Sorry, für Symfony habe ich keine Antwort. –

+0

kann dies Ihnen helfen. http://symfony.com/doc/current/components/http_foundation/sessions.html ODER http://www.craftitonline.com/2011/07/symfony2-setting-flash-messages/ –

0

Welche Version von Symfony verwenden Sie?

Wir auf 2.6.1 laufen und es funktioniert, wenn Sie es so vor der Umleitung einstellen:

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

Dies sollte

von Ihrem Controller arbeitet
$this->get('session')->getFlashBag()->add('info', 'Test');