Yii:设置后无法修改Yii-> app() - >会话数组

时间:2013-12-03 08:40:12

标签: php yii

我设置了以下内容:

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']);

我一无所获?

3 个答案:

答案 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;