セッションコンポーネントの自然な対応として、セッションヘルパーはコンポーネントの大半の機能を、ビューの中で使用可能にします。セッションヘルパーはもはや自動的にビューに追加されることはありません。つまりコントローラー内の $helpers 配列に手動で追加する必要があります。
セッションヘルパーとセッションコンポーネントの大きな違いはヘルパーはセッションへの書き込みが 出来ない ことです。
セッションコンポーネントと同じく、データは ドット記法 の配列構造で読み込みます:
array('User' => array(
'username' => 'super@example.com'
));
ご覧の配列構造には、ノードに User.username といった形で、ドット (.) で表された入れ子配列でアクセスします。
戻り値の型: | mixed |
---|
セッションを読み込みます。文字列か配列か、セッションの内容によってどちらかを返します。
戻り値の型: | boolean |
---|
セッションに指定のキーがあるか確認します。ブール型でキーの有無を返します。
戻り値の型: | string |
---|
セッション内で最後に直面したエラーを返します。
戻り値の型: | boolean |
---|
セッションがビュー内で妥当が確認するのに使用します。
戻り値の型: | string |
---|
通知メッセージの作成 で述べたように、フィードバック用にワンタイム通知を作成することが出来ます。メッセージを SessionComponent::setFlash() で作成したら表示したくなるでしょう。一度メッセージを表示すると、メッセージは削除され表示されなくなります:
echo $this->Session->flash();
上記はシンプルなメッセージを下記の html に沿って出力します:
<div id="flashMessage" class="message">
Your stuff has been saved.
</div>
コンポーネントメソッドと同じく、追加プロパティをセットし使用する html 要素をカスタマイズすることも出来ます。コントローラー内で以下のようなコードを書くことも出来ます:
// in a controller
$this->Session->setFlash('The user could not be deleted.');
このメッセージを出力する時、メッセージを表示するのに使用する html 要素を選択出来ます:
// in a layout.
echo $this->Session->flash('flash', array('element' => 'failure'));
これは View/Elements/failure.ctp を使ってメッセージを書きます。メッセージテキストは html 要素内の $message として使用可能です。
フェイルオーバー用 html ファイルは以下のようになります:
<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 でエスケープするべきです。