3

ケーキブックで、ビュー内のセッションがSessionHelperを使用していることを読みましたが、そのヘルパーにはセッションを削除するメソッドがありません。これは本当にそうですか、誰か助けてもらえますか?

4

5 に答える 5

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」(「ビュー」の意) は、コントローラーによって提供される (モデルから取得された) データの表示にのみ関連する必要があります。

モデルはデータ/データベースへのアクセスを処理し、コントローラーはアプリケーション ロジックを実行します。つまり、セッション コンポーネント (コンポーネントはコントローラー用) にはセッション データを削除するメソッドが与えられていますが、セッション ヘルパー (ヘルパーはビュー用) にはありません。

于 2012-11-15T04:03:29.550 に答える
3

状況に応じて、カスタム 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

于 2014-08-17T13:40:07.543 に答える
1

あなたの見解で試してみunset($_SESSION['YOUR_SESSION_KEY']);てください。

于 2013-05-30T12:26:01.700 に答える
0

セッション変数を削除するには、次のコードを ( Controller 内で) 使用できます。

// same as unset($_SESSION['your_session_varable'])
$this->Session->delete('your_session_varable');

以下を呼び出して、すべてのセッション変数を破棄できます。

$this->Session->destroy();
于 2012-11-15T07:23:56.900 に答える
0

セッション データが配列であり、setFlash と同じように一度だけアクセスしたい場合は、テンプレートなし = false で配列を setFlash に設定できます。

$this->Session->setFlash($arrayData,false,array(),'formData');

そして、ビューでアクセスします

$data = $this->Session->flash('formData');
pr($data);
于 2016-06-24T12:35:42.047 に答える