Yii无法访问会话变量

时间:2014-05-08 07:57:52

标签: php session yii

我的问题:我无法访问视图中的会话数据,我在渲染视图之前尝试将其保存在控制器中。 在我看来,存储会话数据时出错。 (我需要在创建会话数据后修改会话数据,而不仅仅是在单个操作中。)

ProcessController.php

public function actionNew() {

    $formhash = md5(time());
    $hashList = array();
    $hashList[$formhash]['processingNumber'] = '';
    //fill with empty model
    $hashList[$formhash]['model'] = $this->loadModel();
    //store hashList in session
    Yii::app()->session['hashList'] = $hashList;

    $this->render('/process', array('hashValue => $formHash));

}

现在在视图中我需要会话中的数据向用户显示它们。但是当转储hashList时,它只会转储“null”(可能因为控制器中的保存效果不佳)。

process.php

<?php
$form = this->beginWidget('CActiveForm', array(
    'id' => 'process_form',
    //several other things...
));
//Output: null
CVarDumper::dump(Yii::app()->session['hashList'],10,true);
?>

我尝试使用$ _SESSION而不是Yii :: app() - &gt; session,这使我可以访问视图中的数据。但是当在Controller中处理其他操作时,$ _SESSION变量是未定义的。

有什么建议吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

答案很长:

关于这个documents

$session=new CHttpSession;
$session->open();
$value1=$session['name1'];  // get session variable 'name1'
$value2=$session['name2'];  // get session variable 'name2'
foreach($session as $name=>$value) // traverse all session variables
$session['name3']=$value3;  // set session variable 'name3'

您也可以使用:

Yii::app()->session->set('hashList', $hashList);
Yii::app()->session->get('hashList');

再次设置。

除了这个会话之外,为什么不使用它:

$this->render('/process', array('hashValue => $formHash, 'hashList' => $hashList));

因此,如果您可以直接将其保存到视图中,则无需将其保存在会话中。

答案 1 :(得分:0)

根据文档,您的代码应该有效。另一种方法可能是使用以下内容,但相同

Yii::app()->session->add('hashList', $hashList); // set the value
$hashList = Yii::app()->session->get('hashList'); // get the value

我希望问题是调试问题,这意味着您已经观察到缓存或其他过时的数据,或者代码中未显示的部分问题。