Yii无法访问会话变量

fil*_*003 5 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));
Run Code Online (Sandbox Code Playgroud)

}

现在在视图中我需要会话中的数据向用户显示它们.但是当转储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);
?>
Run Code Online (Sandbox Code Playgroud)

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

有什么建议?

谢谢.

Jur*_*rik 1

长答案是:

关于本文件

$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'
Run Code Online (Sandbox Code Playgroud)

您也可以使用:

Yii::app()->session->set('hashList', $hashList);
Yii::app()->session->get('hashList');
Run Code Online (Sandbox Code Playgroud)

并再次设置。

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

$this->render('/process', array('hashValue => $formHash, 'hashList' => $hashList));
Run Code Online (Sandbox Code Playgroud)

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