【问题标题】:Session variable in CakePHP3CakePHP3 中的会话变量
【发布时间】:2018-02-01 07:24:44
【问题描述】:

当用户访问我的网站/应用程序时,我需要存储一些重要信息(分支 ID)。 该信息应该在每个控制器中都可用。我要做的是:

AppController.php

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

FooController.php

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

我不确定这是否是正确的方法。这是一个会话变量还是只是一个配置?这个变量可以被其他用户覆盖吗?

我在Cookbook 中读到的是,我可以使用:

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

然后在任意控制器中读取变量:

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

但是我可以在哪里设置“分支”?这在 AppController 中是否可行?

【问题讨论】:

    标签: php session cakephp cakephp-3.0


    【解决方案1】:

    Sessions is available 任何你可以访问请求对象的地方。

    换句话说,将您的分支设置在您想要的位置(或对您来说容易的位置)。 例如,我认为您最好这样做:。

    在你的App.php初始化你的“分支”值是这样的

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

    在您的AppController 中,在beforeFilter 函数中检查会话是否存在,否则,使用这样的配置值

    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');

    但您也可以在 View 或 Cell 中读写会话...

    希望对你有帮助。

    【讨论】:

    • 谢谢。但是缺少一些东西。我不能在我的 AppController 中使用 $this->Session,即使使用“使用 Cake\Network\Session;” :(
    • 知道了!我在 AppController 中使用了 request->session(): $this->request->session()>read('branch');
    猜你喜欢
    • 2015-12-16
    • 1970-01-01
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 2013-02-07
    • 2011-11-09
    • 2010-12-02
    相关资源
    最近更新 更多