【问题标题】:Cakephp 2.0 can't get or read session view file?Cakephp 2.0 无法获取或读取会话视图文件?
【发布时间】:2016-08-02 08:46:42
【问题描述】:

我正在努力在 view ctp 文件中显示或读取会话,但控制器显示是会话创建的,读取会话也显示在控制器中但无法在 view ctp 文件中显示或读取会话?

控制器功能

var $components = array('Auth','Session','RequestHandler','Email');
$selectedlocation= $_POST['location'];
$this->Session->write('homepagelocation.selectlocation', $selectedlocation);
echo $this->Session->read('homepagelocation.selectlocation');

ctp文件中的会话读取方法

echo $this->Session->read('homepagelocation.selectlocation');

【问题讨论】:

  • 但无法显示或读取会话”不是正确的问题描述。即使问题对于了解 CakePHP 内部结构的人来说可能很明显,请始终尽可能具体地说明 究竟 发生了什么(没有输出?输出错误值?任何错误?等等...... ),以及您期望发生的事情。 ps,不要直接访问超全局变量!使用请求对象access post data
  • 检查是否在 AppController 中加载了“Session”组件

标签: session cakephp view controller cakephp-2.x


【解决方案1】:

为了从视图中的控制器访问数据,您需要将数据设置到视图中。

var $components = array('Auth','Session','RequestHandler','Email');
$selectedlocation= $_POST['location'];
$this->Session->write('homepagelocation.selectlocation', $selectedlocation);
$this->set('location', $this->Session->read('homepagelocation.selectlocation'));

但是,我会问,当您已经可以访问 $selectedlocation 中所需的数据时,为什么要向会话写入数据、读取数据并将其设置到视图?

【讨论】:

    【解决方案2】:

    你好,伙计。我认为您的 $_POST[] 不能以这种方式进入您的控制器,您应该尝试:

    $this->request->data['location']; //Cake 2.x
    $this->data['location']; //Cake 1.3
    

    然后你设置会话到视图:

    $this->set('location', $this->Session->read('homepagelocation.selectlocation')); 
    

    现在您可以在视图上打印它:

    echo $location;
    

    【讨论】:

      【解决方案3】:

      您可以在这里查看:http://book.cakephp.org/2.0/en/core-libraries/helpers/session.html 视图中可以使用Session读取方式,请在Controller中设置Session为$helper元素。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-13
        • 2012-09-22
        • 1970-01-01
        • 1970-01-01
        • 2018-06-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多