5

Symfony 2.0 から 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 %}

私はこれを理解することはできません。私は何が欠けていますか?Flash メッセージは、最初のリダイレクト後も続くべきですよね?

4

2 に答える 2

7

まず、フラッシュバッグのadd代わりにメソッドを使用してみてください. set次に、私に合ったこのテンプレートを試してください。

{% for type, flashMessages in app.session.flashbag.all() %}
    {% for flashMessage in flashMessages %}
        <div class="alert alert-{{ type }}">
            {{ flashMessage|trans }}
        </div>
    {% endfor %}
{% endfor %}
于 2012-09-26T14:32:14.467 に答える
6

私はそれを考え出した。

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

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

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

于 2012-09-27T10:54:33.780 に答える