This document is for a version of CakePHP that is no longer supported. Please upgrade to a newer release!

SessionHelper

class SessionHelper(View $view, array $settings = array())

Session コンポーネントの自然な対応として、 Session ヘルパーは コンポーネントの大半の機能を、ビューの中で使用可能にします。

Session ヘルパーと Session コンポーネントの大きな違いはヘルパーは セッションへの書き込みが 出来ない ことです。

Session コンポーネントと同じく、データは ドット記法 の配列構造で読み込みます:

array('User' => array(
    'username' => '[email protected]'
));

ご覧の配列構造には、ノードに User.username といった形で、ドット (.) で表された入れ子配列でアクセスします。

SessionHelper::read(string $key)
戻り値の型:

mixed

セッションを読み込みます。文字列か配列か、セッションの内容によってどちらかを返します。

SessionHelper::consume($name)
戻り値の型:

mixed

セッションから値の読み込みと削除をします。このメソッドは、読み込みと削除を一つの操作で 行いたい場合に便利です。

SessionHelper::check(string $key)
戻り値の型:

boolean

セッションに指定のキーがあるか確認します。キーの存在を示すブール型を返します。

SessionHelper::error()
戻り値の型:

string

セッション内で最後に直面したエラーを返します。

SessionHelper::valid()
戻り値の型:

boolean

セッションがビュー内で妥当が確認するのに使用します。

通知やフラッシュメッセージの表示

SessionHelper::flash(string $key = 'flash', array $params = array())

バージョン 2.7.0 で非推奨: フラッシュメッセージを表示するには FlashHelper を 使用してください。

通知メッセージの作成 で述べたように、フィードバック 用にワンタイム通知を作成することが出来ます。メッセージを SessionComponent::setFlash() で作成したら表示したくなる でしょう。一度メッセージを表示すると、メッセージは削除され表示されなく なります:

echo $this->Session->flash();

上記はシンプルなメッセージを下記の HTML に沿って出力します:

<div id="flashMessage" class="message">
    Your stuff has been saved.
</div>

コンポーネントメソッドと同じく、追加プロパティをセットし使用する エレメントをカスタマイズすることも出来ます。コントローラー内で以下の ようなコードを書くことも出来ます:

// in a controller
$this->Session->setFlash('The user could not be deleted.');

このメッセージを出力する時、メッセージを表示するのに使用する エレメントを選択出来ます:

// in a layout.
echo $this->Session->flash('flash', array('element' => 'failure'));

これは View/Elements/failure.ctp を使ってメッセージを書きます。 メッセージテキストは、エレメント内の $message として使用可能です。

失敗時のエレメントには、以下のようなものを含みます:

<div class="flash flash-failure">
    <?php echo h($message); ?>
</div>

追加パラメーターを flash() メソッドに渡すことも出来ます。 これによってカスタマイズしたメッセージを生成することが出来ます。

// In the controller
$this->Session->setFlash('Thanks for your payment');

// In the layout.
echo $this->Session->flash('flash', array(
    'params' => array('name' => $user['User']['name'])
    'element' => 'payment'
));

// View/Elements/payment.ctp
<div class="flash payment">
    <?php printf($message, h($name)); ?>
</div>

注釈

CakePHP は、デフォルトではフラッシュメッセージを HTML エスケープしません。 もしリクエストやユーザーデータをフラッシュメッセージに含める場合は、 メッセージを整形するときにそれらを h でエスケープするべきです。