- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Cake2系のコントローラでセッション情報取得)
Cake2系のコントローラでセッション情報取得
このQ&Aのポイント
- CakePHP2を使用して、開発を行っている中で、自前のコントローラのメソッド内でセッション情報を取得しようとするとエラーが発生します。
- AppControllerを継承したControllerのメソッド内で別のコントローラをnewでインスタンスを生成し、自前のコントローラのメソッドを呼び出している場合、セッション情報を取得できません。
- newしたコントローラへ必要な情報を渡す方法は引数以外にはないのでしょうか。セッション情報をnewしたコントローラで取得したいのですが、可能でしょうか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
loadメソッドって、どのクラスのメソッドを利用しようとしてるんでしょう? エラーが出ている文がどういう記述なのか、それぞれのクラスとメソッドをどのように呼び出してるのかさっぱりわからないので、大方、大文字小文字の間違いで、クラス認識されてない可能性が高そうとしかいえない。 とりあえず、CakeSession の staticメソッドを使えば、ほぼどこからでも、現在の$_SESSION に読み書きできますよ。check,read,writeのいずれかのメソッドを一番最初に呼び出した時点で、session_start() も実行されます(まだどこからもstartしていない場合)。 セッションの基本設定は、通常 core.phpで済んでるはずだから、コントローラーに制御が移ったころには、何時session_start()しても大丈夫なはずなので。 <? /* コントローラーのactionメソッド内、またはview用 ctp ファイル内、モデルメソッド内、その他初期コントローラー呼び出し以降に実行される部分ならいずれでも動作する。 */ $vk = 'hogekey'; $vv = ''; if( CakeSession::check($vk) ){ $vv = CakeSession::read($vk); }else{ $vv = 'hogehoge'; CakeSession::write($vk,$vv); }
お礼
ご回答ありがとうございます。 $_SESSIONで取得できることは確認できていたのですが、$this->Session->load("HOGE"); で取得できなかったので、何がおかしいのかわかりませんでした。 CakeSessionについては、勉強不足でした。 大変参考になりました。 ありがとうございました。