10

ページにフラッシュ メッセージのサポートを追加したいと考えています。ここにあるドキュメントに従ってこれを実装しました。

次のスニペットを基本レイアウトに追加しました。(特定のアクション テンプレートにも追加しようとしました)。

{% if app.session.hasFlash('notice') %} 
    <div id="flashmessage" class="flash-notice"> 
       {{ app.session.flash('notice') }} 
   </div> 
{% endif %} 

次のエラーを追加した後、スローされます

Twig_Error_Runtime: "" のアイテム "hasFlash" が "MyBundle::layout.html.twig" の 66 行目に存在しません

他に何かする必要がありますか?

4

7 に答える 7

18

symfony 2.0 または 2.1 を使用していますか?(現在マスターブランチ)?

symfony 2.1 の場合、ドキュメントは次の場所にあります: http://symfony.com/doc/2.1/book/controller.html#flash-messages

フラッシュ メッセージは次のように表示されます。

{% for flashMessage in app.session.flashbag.get('notice') %}
    <div class="flash-notice">
        {{ flashMessage }}
    </div>
{% endfor %}
于 2012-07-31T08:01:30.867 に答える
6

セッションを自動開始したことを構成ファイルで確認してください。

session:
    default_locale: %locale%
    auto_start:     true

エラーは、hasFlash 関数に関するものではなく、Twig がセッション クラスを見つけられないことであると思われるためです。実際、私のレイアウトにはほぼ同じコードがあります。

于 2011-11-23T17:06:10.277 に答える
3

symfony 2.6 +

{% if app.session.flashbag.has('notice') %}
    {{ app.session.flashbag.get('notice').0 }}<br/>
{% endif %}

flashbag はこのバージョンの配列によるものであるため、foreach が必要であるか、インデックスを使用します。これ以上何も必要ないので、インデックスを使用しています。

于 2015-09-05T19:25:14.687 に答える
1

コントローラ内

$this->get('session')->getFlashBag()->add('notice', 'Your message!');

あなたのTwigファイルで

{% for flashMessage in app.session.flashbag.get('notice') %}
    <div class="alert alert-warning">{{ flashMessage }}</div>
{% endfor %}  
于 2014-11-27T23:31:24.303 に答える
0

intercept_redirectsデバッグモードで true の場合、フラッシュメッセージが機能しないことがわかりました。

于 2012-05-17T17:00:44.993 に答える
-1

アクションのどこかにフラッシュ メッセージを設定しましたか?

$this->get('session')->setFlash('notice', 'Your changes were saved!');

追加のリクエストが1 つだけの場合、フラッシュ メッセージはユーザーのセッションに保存されることに注意してください。

于 2011-11-23T16:32:38.027 に答える