我设置了以下内容:
Yii::app()->session['payment_detail'] = array(
'model_user_id' => $model->id,
'model_customer_id' => $model_customer->id,
'package_id' => $package_id,
'order_id' => $model['order']['item']['order_id'],
'order_created' => $model['order']['item']['created'],
'refresh' => 1);
现在,我需要添加数据:
Yii::app()->session['payment_detail']['model_package'] = $model_package;
其中$model_package
是!empty array
;
当我使用print_r($model_package);
时,我会看到数组数据;
为什么我使用:
print_r(Yii::app()->session['payment_detail']['model_package']);
我一无所获?
答案 0 :(得分:2)
嗯,没什么奇怪的,你不能像这样修改Yii会话:
Yii::app()->session['payment_detail']['model_package'] = $model_package;
您应该收到以下错误:
间接修改CHttpSession的重载元素无效
你应该试试这个:
$payment_detail = Yii::app()->session['payment_detail'];
$payment_detail['model_package'] = $model_package;
Yii::app()->session['payment_detail'] = $payment_detail;
PS:看看这里: http://www.yiiframework.com/doc/api/1.1/CHttpSession#get-detail
答案 1 :(得分:1)
<强>被修改强>
你开始上课吗?也许它不是自动启动;
要开始会话,请调用open();完成并发送会话 数据,调用close();要销毁会话,请调用destroy()。
如果autoStart设置为true,则会自动启动会话 当应用程序初始化应用程序组件时。
CHttpSession可以像数组一样用来设置和获取会话数据。 例如,$ session = new CHttpSession; $会话而&GT;打开();
$ VALUE1 = $会话[ 'NAME1']; //获取会话变量'name1'
$值2 = $会话[ 'NAME2']; //获取会话变量'name2'
foreach($ session as $ name =&gt; $ value)//遍历所有会话变量
$会话[ 'NAME3'] = $值3; //设置会话变量'name3'
关于数组会话: 尝试这个,不是很好的解决方案,但至少工作一个:
$session = Yii::app()->session;
$temp = $session['foo'];
$temp['bar'] = 3;
$session['foo'] = $temp;
答案 2 :(得分:1)
尝试做:
$session=new CHttpSession;
$session->open();
$session['payment_detail']['model_package'] = $model_package;
OR
$session = Yii::app()->session;
$temp = $session['payment_detail'];
$temp['model_package'] = $model_package;
$session['payment_detail'] = $temp;