我希望通过会话将数据保存在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)都会返回此错误。可以是因为数据损坏吗?谢谢。
答案 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'
));
也许您将数据保存在错误的位置;
也许你有帖子或获得行动;
并且还打印$_数据,并在保存会话中的数据之前查看获得的数据