“节点不再存在”Yii

时间:2013-06-25 13:23:19

标签: session yii

我希望通过会话将数据保存在Yii中的两个操作之间。我正在用一个动作写出数据

 Yii::app()->session['resultsData'] = $data;

并尝试在下一步行动中获取

$this->resultsData = Yii::app()->session['resultsData'];

但是当我想在视图中看到print_r这个数据时......

<? print_r($this->resultsData); ?>

我得到了

PHP warning

print_r() [<a href='function.print-r'>function.print-r</a>]: Node no longer exists

实际上,对此数据数组的任何操作(如serialize或json_encode)都会返回此错误。可以是因为数据损坏吗?谢谢。

2 个答案:

答案 0 :(得分:1)

Yii :: app() - &gt; session ['resultsData'];无需使用$ this,只需分配变量,如图所示

Yii::app()->session['resultsData'] = $data;
resultsData =Yii::app()->session['resultsData'];

并在另一个操作中以

的形式访问它
echo  Yii::app()->session['resultsData'] ;

如果你想在另一个中访问resultData,你需要将该变量传递给该动作,如图所示

$this->redirect(array('actionname','resultData'=>$resultData));

在你的actionname中回显它或print_r并检查

将其发送到视图,如图所示

$this->render('ViewName',array('resultData'=>resultData));

从视图到操作使用此

Yii::app()->createAbsoluteUrl('ControllerName/actionName',array('data'->$data));

答案 1 :(得分:0)

也许这会对你有所帮助:

$model = new CompanyForm('step1');
        if (is_array(Yii::app()->session['step1']))
            $model->attributes = Yii::app()->session['step1'];

if (!is_array(Yii::app()->session['step1']))
            $this->redirect(array('createStep1'));

    $this->render('create', array(
        'model' => $model,
        'step' => 'step1'
    ));

也许您将数据保存在错误的位置;

也许你有帖子或获得行动;

并且还打印$_数据,并在保存会话中的数据之前查看获得的数据