0

我想按会话在 Yii 中保留 2 个动作之间的数据。我在一个动作中写入数据

 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,都会返回这个错误。可能是因为数据损坏吗?谢谢你。

4

2 回答 2

1

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

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

并在另一个动作中访问它

echo  Yii::app()->session['resultsData'] ;

如果您想访问另一个结果数据,您需要将该变量传递给该操作,如图所示

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

并在您的操作名称中回显它或 print_r 并检查

如图所示发送到视图

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

从视图到行动使用这个

Yii::app()->createAbsoluteUrl('ControllerName/actionName',array('data'->$data));
于 2013-06-25T13:28:46.727 回答
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'
    ));

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

也许您有帖子或采取行动;

而且, print_r $data 并查看在会话中保存数据之前得到的数据

于 2013-06-25T13:49:02.200 回答