test

CakePHP Note

SessionComponent

UPDATE:2008.06.16

複数のページにわたってデータを受け渡たすためのセッションを管理します。$_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. デフォルトの出力
  2. 素の出力
  3. レイアウトを使った出力

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;