CakePHP でセッション データを作成、書き込み、読み取りするにはどうすればよいですか?
-
11-09-2019 - |
質問
セッションを作成してデータを書き込む方法の例を誰か教えてください。write コマンドを使用してセッションにデータを書き込む方法の構文を見てきました。ただし、セッションを作成してその値を取得する方法は次のとおりです。
私のアプリケーションには、すべてのページリクエストで使用する必要がある 2 つのデータ、form_id と user_id があります。では、それをセッション変数として保存し、アプリケーション全体で使用するにはどうすればよいでしょうか?
編集
function register()
{
$userId=$this->User->registerUser($this->data);
$this->Session->write('User.UserId',$userId);
//echo "session".$this->Session->read('User.UserId');
$this->User->data=$this->data;
if (!$this->User->validates())
{
$this->Flash('Please enter valid inputs','/forms' );
return;
}
$this->Flash('User account created','/forms/homepage/'.$userId);
}
セッション変数の使い方 'ユーザー.ユーザーID' $this->Flash('ユーザー アカウントが作成されました','/forms/homepage/' の $userId の代わりに。$userId);
また、すべてのページリクエストで userId も渡すため、すべてのビューファイルでこの変数を使用できますか?
編集2
ユーザーとフォームの 2 つのコントローラーがあります。ユーザーIDをusersのセッション変数に書き込みます_コントローラ。私はhomepage.ctpというビューファイルを持っています、そのアクションはforms_controllerにあります。 さて、ホームページの users_controller で定義されたセッション変数を使用するにはどうすればよいでしょうか?愚かな質問をしていたらごめんなさい。私はケーキブックに目を通しましたが、私の疑問は解消されませんでした。私もコーディング方法を試行錯誤中ですので、ぜひ参考にしてください。
編集3
コントローラーのホームページアクションのユーザーIDであるセッション変数「uid」があります。
$this->Session->write('uid',$this->data['Form']['created_by']);
同じコントローラーのデザインアクションメソッドに同じ変数が必要です。私が与えるとき
$uid=$this->Session->read('uid');
echo "uid: ".$uid;
値はエコーされません。
同じコントローラー内でセッション変数を使用することはできませんか?
解決 5
uid がエコーされなかった理由がわかりました (質問の 3 の部分を編集)。これは、コントローラの終了タグ ?> の後に空白があったという愚かな間違いによるものです。現在は正常に動作しています。
他のヒント
パン屋さんはあなたの親友です。
http://book.cakephp.org/view/398/Methods
すべてのセッションの読み取り/書き込みはコントローラーに属します。
$this->Session->write('Person.eyeColor', 'Green');
echo $this->Session->read('Person.eyeColor'); // Green
Cake PHPでは次のことができます このようにセッションを作成します
$this->request->session()->write('user_id', 10);
そして、次のことができます このようにセッション値を読み取ります
echo $this->request->session()->read('user_id');
超シンプル!
セッションを作成するためにコードを記述する必要はありません。セッションはすでに組み込まれています。その後、上記のように読み取りセッションと書き込みセッションを使用するだけです。詳細については、こちらも参照してください。
http://book.cakephp.org/2.0/en/core-libraries/components/sessions.htmlコントローラーで使用される
http://book.cakephp.org/2.0/en/core-libraries/helpers/session.htmlビューで使用される
この場合は次のようになります。
$this->Flash('User account created','/forms/homepage/'.$this->Session->read('User.UserId'));
2 番目の質問には Jason Miy が回答します (http://api.cakephp.org/class/session-helper)。これをビューで簡単に使用できます。
$userId = $session->read('User.UserId');
適切なクックブックのページをゆっくりと注意深く読むと、通常は非常に役立ちます...
セッションの動作がおかしくなったときに、これが役に立ちます。
モデル:
function clearAllDBCache() {
$db =& ConnectionManager::getDataSource($this->useDbConfig);
$db->_queryCache = array();
}
`
ヘルパー SessionHelper にアクセスします lib/Cake/View/Helper/SessionHelper.php
そしてメソッドを追加します:
public function write($name = null) {
return CakeSession::write($name);
}