2017-08-23 85 views
0

ユーザが自分のウェブサイト/アプリにアクセスするときに、いくつかの重要な情報(ブランチID)を保存する必要があります。 この情報は、すべてのコントローラで使用可能にする必要があります。私がやっていることはこれです:CakePHP3のセッション変数

AppController.php

Configure::write('branch',$id); 

FooController.php

$branchId = Configure::read('branch'); 

私はこれが正しい方法であるかはわかりません。これはセッション変数か単なる設定ですか?この変数を他のユーザーが上書きできるかどうか私は私が使用できること、だったCookbookに読ま何

:その後、

Configure::write('Session', [ 
    'defaults' => 'php' 
]); 

と任意のコントローラに変数をお読みください。

$this->request->session()->read('branch'); 

しかし、私は「枝」を設定することができますか?これはAppControllerでも可能ですか?

答えて

1

Sessions is availableどこでもリクエストオブジェクトにアクセスできます。

他の言葉で言えば、あなたが好きな場所(またはあなたが簡単な場所)にブランチを設定します。 たとえば、次のようなことをするのがよいと思います。あなたのApp.php

セッションが存在する場合はそれ以外の場合は、この

if(!$this->request->session()->read('branch')){ 
    $this->request->session()->write('branch', Configure::read('branch')); 
} 
のような設定値を使用し、beforeFilter機能チェックの内側に、あなたのAppControllerでこの

Configure::write('branch',$id); 

ようあなたの「支店」の値を初期化します

あなたのfooControllerには、$this->request->session()->read('branch');$this->request->session()->write('branch', 'value');

また、ビューまたはセル内でセッションを読み書きすることもできます。

希望すると助かります。

+0

ありがとうございます。しかし何かが欠けている。私はAppControllerで$ this-> Sessionを使用することはできません。 'use Cake \ Network \ Session;'でも: – DeVolt

+1

私はAppControllerでrequest-> session()を使っています: $ this-> request-> session()> read( 'branch'); – DeVolt