2016-04-20 11 views
0

をリダイレクト:フラッシュメッセージは後に設定されていない、私はこのように、私はメソッド内でテンプレートをレンダリングする場合は正常に動作しているフラッシュメッセージを、設定しようとしています

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

しかし、私はRedirectResponseを返す場合フラッシュメッセージは、私はまったく同じ方法にリダイレクトしても、設定されていません。

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

どうしてこれが動作していない、そしてどのように私はそれを動作させるのですか?

答えて

0

フラッシュメッセージの表示にセッションを使用します。

出力を生成した後にセッションを設定解除し、flashmessage 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のは、使用しているのsymfonyのバージョンフラッシュメッセージ

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

これは何からかなり遠くにあるI必要、質問は、symfony、バニラではなく、PHP –

+0

申し訳ありませんが、私は答えがありません。 –

+0

これがあなたに役立つかもしれません。 http://symfony.com/doc/current/components/http_foundation/sessions.htmlまたはhttp://www.craftitonline.com/2011/07/symfony2-setting-flash-messages/ –

0

を非表示にするには?

我々は2.6.1上で実行されていると、それはあなたがリダイレクトする前に、このようにそれを設定している場合に動作します:

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

これはあなたのコントローラから動作するはず

$this->get('session')->getFlashBag()->add('info', 'Test'); 
関連する問題