Symfonyのフラッシュパラメーター

Ty

こんにちは、Tyです。
今回はSymfonyのフラッシュ機能についてのお話です。

Symfonyではフラッシュパラメーターというものが使用でき、
1回のアクション間のみ保持されるセッション情報を記述できるようです。

setFlash関数で指定された属性(キー)に値を保持し、
次のアクションでgetFlash関数で指定された属性を呼び出すとともに
保持された情報が削除される、というものです。

値を呼び出さなくてもさらに次のアクションに移る際に自動的に
セッションから消去されるようなので、一時的に値を保持しておく場面では
かなり使いやすい仕組みになっています。

以下はフラッシュパラメーターを使った際に私が軽くはまった時のお話です。
Symfonyのバージョンは1.0.14です。
上述のとおり値を保持する際に、

setFlash('piyo', $value1);
setFlash('foo', $value2);
setFlash('hogehogehogehogehoge', $value3);

のように記述して各変数の値をそれぞれセッションに保持させ、
次のアクションで

$value1 = getFlash('piyo');
$value2 = getFlash('foo');
$value3 = getFlash('hogehogehogehogehoge');

というように呼び出すことで、一つ前のアクションの変数の
値を参照しようとしたところ、$value1, $value2 の値は
取得できるものの、なぜか$value3の値だけが取得できない、という事態が発生。

ためしにsetFlashの際に$value3ではなく定数やほかの変数を
保持させようとしてもうまくいかず、30分以上悩みました。

ほかの二つと違うところといえば属性の名前くらいしか思い浮かばなくなったあたりで、
属性の名前を'hogehogehogehogehoge'から短めの'hoge'に変更したところ、
なぜか正常値を取得できました。

[Symfony/Flash]に格納できる値の限界なのか、セッション全体の限界なのか、
属性名やデータの内容で容量を無駄遣いすると危険なことになるようです。

[Symfony]

投稿日:08年05月22日 17:03:44

トラックバックURL

コメントする

名前

メールアドレス

URL

コメント (HTMLは使えません)