4

設定されたセッションフラッシュに反応しようとしますが、常にelse-pathを取得します

シンフォニー 2.1.3

コントローラ:

$this->get('session')->getFlashBag()->set('contactActionNoticeError', 'Message not sent');

ビュー(「古い」スタイルと新しいスタイルを試しました)しかし、私はbla2を取得します

{% if app.session.flashbag.has("contactActionNoticeError") or app.session.hasFlash("contactActionNoticeError") %}
    bla1
{% else %}
    bla2
{% endif %}

これですべてのフラッシュを表示する場合:

{% for label, flashes in app.session.flashbag.all %}
    {% for flash in flashes %}
        {{ label }} - {{ flash }}
    {% endfor %}
{% endfor %}

私はこれを得る:

contactActionNoticeError - Message not sent
4

3 に答える 3

3

flashbag のコンテンツを取得して、空かどうかを確認します。

{% set contactActionNoticeError = app.session.flashbag.get("contactActionNoticeError") %}

{% if (contactActionNoticeError is not empty) %}
    bla1
{% else %}
    bla2
{% endif %}

エラーを引き続き表示できます (ドキュメントから取得したコード):

{% for flashMessage in contactActionNoticeError %}
    <div>
        {{ flashMessage }}
    </div>
{% endfor %}
于 2013-10-31T02:55:52.743 に答える
2

古い質問は知っていますが、もっと良い方法があるので回答を追加したいと思います。上記のように、デフォルトの動作では、一度アクセスするとフラッシュバッグの設定を解除します (これは、最初に確認したい場合にはあまり便利ではありません)。

// Instead of 
{% if app.session.flashBag.get('success') is not empty %}
// Use this instead
{% if app.session.flashBag.peek('success') is not empty %}

この情報のソース: Github FlashBag

于 2016-12-01T09:24:29.723 に答える