ケーキブックで、ビュー内のセッションがSessionHelperを使用していることを読みましたが、そのヘルパーにはセッションを削除するメソッドがありません。これは本当にそうですか、誰か助けてもらえますか?
5 に答える
セッション データを削除するには、View ではなく Controller 内でSession コンポーネントを使用します。
//example from the CakePHP book (linked above)
$this->Session->delete('Person');
または:
destroy メソッドは、一時ファイル システムに保存されているセッション Cookie とすべてのセッション データを削除します。次に、PHP セッションを破棄し、新しいセッションを作成します。
$this->Session->destroy();
ビュー内のセッション データを削除することは技術的には可能ですが (結局は単なる PHP ファイルです)、CakePHP フレームワークは MVC 構造を念頭に置いて構築されています。「V」(「ビュー」の意) は、コントローラーによって提供される (モデルから取得された) データの表示にのみ関連する必要があります。
モデルはデータ/データベースへのアクセスを処理し、コントローラーはアプリケーション ロジックを実行します。つまり、セッション コンポーネント (コンポーネントはコントローラー用) にはセッション データを削除するメソッドが与えられていますが、セッション ヘルパー (ヘルパーはビュー用) にはありません。
状況に応じて、カスタム Flash メッセージを使用できます。このように、カスタムキーでフラッシュメッセージを設定します
$this->Session->setFlash('my_value', 'default', array(), 'my_key');
フラッシュメソッドを使用してビューで読み取ります(自動的に削除されます)
$value = $this->Session->flash('my_key');
この投稿の詳細http://hashmode.com/cakephp-delete-session-in-view/81
あなたの見解で試してみunset($_SESSION['YOUR_SESSION_KEY']);
てください。
セッション変数を削除するには、次のコードを ( Controller 内で) 使用できます。
// same as unset($_SESSION['your_session_varable'])
$this->Session->delete('your_session_varable');
以下を呼び出して、すべてのセッション変数を破棄できます。
$this->Session->destroy();
セッション データが配列であり、setFlash と同じように一度だけアクセスしたい場合は、テンプレートなし = false で配列を setFlash に設定できます。
$this->Session->setFlash($arrayData,false,array(),'formData');
そして、ビューでアクセスします
$data = $this->Session->flash('formData');
pr($data);