CakePHP3中的会话变量
当用户访问我的网站/应用程序时,我需要存储一些重要信息(分支机构ID)。 此信息应在每个控制器中可用。我所做的是: AppController.phpCakePHP3中的会话变量,php,session,cakephp,cakephp-3.0,Php,Session,Cakephp,Cakephp 3.0,当用户访问我的网站/应用程序时,我需要存储一些重要信息(分支机构ID)。 此信息应在每个控制器中可用。我所做的是: AppController.php Configure::write('branch',$id); $branchId = Configure::read('branch'); FooController.php Configure::write('branch',$id); $branchId = Configure::read('branch'); 我不确定这是不是正
Configure::write('branch',$id);
$branchId = Configure::read('branch');
FooController.php
Configure::write('branch',$id);
$branchId = Configure::read('branch');
我不确定这是不是正确的方法。这是一个会话变量还是一个配置?其他用户是否可以覆盖此变量 我在书中读到的是,我可以使用:
Configure::write('Session', [
'defaults' => 'php'
]);
然后读取任何控制器中的变量:
$this->request->session()->read('branch');
但我在哪里可以设置“分支”?这在AppController中是否可行?您可以访问请求对象的任何地方
换句话说,把你的分支设置在你想要的地方(或者对你来说容易的地方)。
例如,我认为你最好这样做:
在你的App.php中
初始化你的“分支”值,如下所示
Configure::write('branch',$id);
if(!$this->request->session()->read('branch')){
$this->request->session()->write('branch', Configure::read('branch'));
}
在AppController
中,在beforeFilter
函数内检查会话是否存在,否则,使用如下配置值
Configure::write('branch',$id);
if(!$this->request->session()->read('branch')){
$this->request->session()->write('branch', Configure::read('branch'));
}
在您的fooController
中,只需使用$this->request->session()->read('branch')代码>和$this->request->session()->write('branch','value')代码>
但您也可以在视图或单元格内读写会话
希望有帮助。谢谢。但是缺少了一些东西。我无法在AppController中使用$this->Session,即使使用“use Cake\Network\Session;”:(明白了!我在AppController中使用了request->session():$this->request->session()>read('branch');