test
CakePHP Note
SessionComponent
複数のページにわたってデータを受け渡たすためのセッションを管理します。$_SESSIONの代わりにセッションを使う事が出来るコンポーネントです。
セッションに関する設定
app/config/core.phpにセッションに関する設定項目があります。
セッションの保存方法
Session.saveにて設定。次のいずれかの方法を選びます。
- cake(app/tmp/sessionに保存)
- database(データベースに保存)
- php(PHPのphp.ini設定による)
セッションの有効期限
Session.timeout、Security.levelなどの設定があります。
主なメソッド
- write($name, $value)
- read($name)
- check($name)
- delete($name)
- error()
setFlash($message, $layout = 'default', $params = array(), $key = 'flash')
flashメッセージのためのメッセージをセッションに設定します。flashメッセージはビューの中でSessionヘルパーを使って表示させます。$keyを指定しないと'Message.flash'というキーでメッセージが保存されます。$keyを指定すると'Message.key'の形で保存されます。Sessionヘルパーはデフォルトで使用されますので、コントローラーで明示的に設定する必要はありません。ビューの中で$session->check('Message.key')で指定したキーにメッセージが設定されているかチェックし、$session->flash('key')で表示させる事が出来ます。
setFlashとビュー
- デフォルトの出力
- 素の出力
- レイアウトを使った出力
1. setFlashで$layoutを指定しない、あるいは'default'を指定した場合ハードコードされている以下ようなdiv要素と共に出力します。
<div id="keyMessage" class="'message'">$message</div>
id属性のkeyMessageの'key'の部分は$keyで指定した値、class属性のmessageはデフォルトで'message'、$params['class']で指定もできます。
2. $layoutを''(空)かnullを指定した場合は、メッセージのみを出力します。
3. レイアウトファイルを使用して出力します。レイアウトファイルでは以下のように$content_for_layoutを使います。
echo $content_for_layout;