2012-09-26 18 views
5

私はSymfony 2.0からSymfony 2.1に移行しています。私は(悪いルートを渡すことによって、例えば)エラーが発生した場合はフラッシュメッセージがあることを、私はプロファイラをチェックSymfony 2.1のリダイレクト時にフラッシュメッセージが消える

public function createEntidadeAction() { 
    $this->get('session')->getFlashBag()->set('error', 'message'); 
    return $this->redirect($this->generateUrl('EntidadeBundle_index')); 
} 

私は私のコントローラ上の次の簡単なコードを持っています。

しかし、リダイレクトを成功させると、フラッシュメッセージが消えて何も表示されません。私は対応するTwigテンプレートのフォローを持っています:

{% for flashMessage in app.session.flashbag.get('error') %} 
    <div class="flash-notice"> 
     {{ flashMessage }} 
    </div> 
{% endfor %} 

私はこれを理解できません。私は何が欠けていますか?フラッシュメッセージは、最初のリダイレクトの後に続く必要がありますか?

答えて

6

私はそれを理解しました。

セッションの問題により、Flashメッセージが表示されませんでした。

Symfony 2.1では、デフォルトでstorage_idとhandler_idにsession.storage.nativeが使用されるようになりました。

このセッションの問題がどのように解決されたかをご確認くださいhere

6

最初に、フラッシュバッグにsetの代わりにaddメソッドを使用してみてください。次に、このテンプレートを試してみてください:

{% for type, flashMessages in app.session.flashbag.all() %} 
    {% for flashMessage in flashMessages %} 
     <div class="alert alert-{{ type }}"> 
      {{ flashMessage|trans }} 
     </div> 
    {% endfor %} 
{% endfor %} 
+0

問題は私がそれを表示している方法ではありません。フラッシュメッセージは文字どおり消滅します。プロファイラを見ると、フラッシュメッセージは表示されません。最初のリダイレクト直後。 addを使用してもこれは変わりませんでした。たぶん、これはいくつかのPHPの設定です。私はこれをconfig.yml: 'session: storage_id:session.storage.mock_file'に入れて、php.iniの設定をすることができます。 – Fonsini

+0

モックファイルストレージ?実際のセッションではなく、テストに使用する必要があります。 'session.storage.native'を使います。 –

+0

問題は、同じセッションをマスターセッションから保存するために、ローカルのsymfonyセッションが必要なことです。そして、ローカルの値では、私は** C:/ wamp/www/Symfony/symproject/app/cache/dev/sessions **を持ち、マスター値は** c:/ wamp/tmp **です。これは認証上の理由から(私は単純なsaml phpを使用しています)OKではありません。この場合、どうしたらいいですか? Symfony 2.0ではこの問題はありませんでした。 Local session save pathの値はsymfonyによって変更されていませんでした。 – Fonsini

関連する問題