2009-05-29 3 views
3

アクションでは、私は、ユーザーのためのいくつかのフィードバック設定:ビューでSymfonyのフラッシュ変数を間違った方法で使用していますか?

$this->getUser()->setFlash('message', array(
    "type" => "notice", 
    "content" => "Well done buddy, you did it." 
    )); 

    $this->redirect('home/index'); 

を、私は次のコードを使用し

<?php if ($sf_user->hasFlash('message')): $message = $sf_user->getFlash('message') ?> 
    <p class="<?php echo $message["type"] ?>" ><?php echo $message["content"]?></p> 
<?php endif; ?> 

をしかし、メッセージは表示されません。

問題が「それが一度表示されても、それが消滅しない」というのは、それが機能することを意味するためです。問題は決して出現しないということです。一度もありません。

私はSymfony 1.2を使用しています。これは、flash varがユーザオブジェクトにバインドされている理由です。

答えて

2

setFlashの2つの文字列(配列ではない)で同じことを試してください。私はこれがうまくいくと思います。 symfonyは、テンプレート内でそれにアクセスする際に、エスケープしています。何が得られるかを確かめるためにvar_dump($sf_user->getFlash('message'));を試してください。

1

Symfonyの点滅は、ページ上に正確に1回の応答を表示するためのもので、メッセージを「点滅」させます。ページがリフレッシュされると、そのフラッシュはもう存在しません。

は、ユーザがフォームを送信仮定、およびアクションは、次のコード

$this->getUser()->setFlash('message', 'Some message here'); 

を実行し、ビューは、その後、次の

# Note: getFlash returns "" if flash is not set 
echo $sf_user->getFlash('message'); 

表示するには、このユーザから非常に第1の要求を有していますフォームを送信した後、フラッシュを設定すると、getFlashは "Some messages here"を返し、フラッシュを削除/設定解除します。したがって、そのユーザーからの同じメッセージの要求は、空の文字列を返します。

これは、1回のリクエストでフラッシュが持続することを意味します。フォームの応答をフォームと同じページに表示するのは良い方法です。

+0

私はフラッシュがエフェメリアル変数であることを知っています。私はそれが一度働くことを意味しなかった、そして私はウェブページをリロードし、それは動作しませんでした。私はそれが期待されたやり方で一度働いたことを意味しました、そして、全体のメカニズムはこれ以上働かなかったのです。たぶん私はsoemthingを変更しましたが、私はそれのように感じることはありません。 –

+0

私は混乱を理解していますので、この回答者が繰り返されるのを避けるために文を削除しました。 –

関連する問題