BoyLee 2011-06-16 13:44:53 4886次浏览 12条回复 0 0 0
Yii::app()->session['Locale'][$defaultLabel->alpl_ident] = $defaultLabel->alpl_value;
Indirect modification of overloaded element of CHttpSession has no effect

如果按照上面的方法写,会有下面那行的报错

解决方法

foreach ($pageLocaleInfo as $pageInfo)
{
  $localeArray[$pageInfo->alpl_ident] = $pageInfo->alpl_value;
}
Yii::app()->session['Locale']=$localeArray;

我想问是不是session就不支持2维操作?

但是我可以这样读取内容

Yii::app()->session['Locale']['xxx']

不解。。。是不是什么基础的东西我miss掉了。。

  • 回复于 2011-06-16 14:47 举报

    CWebApplication的session属性是只读的,不管一维还是二维,都不可以赋值。

  • 回复于 2011-06-16 14:49 举报

    可以使用CHttpSession类。

    $session=new CHttpSession;
    $session->open();
    $value1=$session['name1'];  // get session variable 'name1'
    $value2=$session['name2'];  // get session variable 'name2'
    foreach($session as $name=>$value) // traverse all session variables
    $session['name3']=$value3;  // set session variable 'name3'
    
  • 回复于 2011-06-16 22:10 举报
    Yii::app()->session['Locale']=$localeArray; 
    

    可是我都是这样直接赋值的啊。。。难道有错?

  • 回复于 2011-06-16 22:42 举报

    看一下文档就知道了!
    CWebApplication的session属性:
    session property read-only

  • 回复于 2011-06-23 12:39 举报
    $session=new CHttpSession;
    $session->open();
    $session['Lee'] = array('var1'=>'leel');
    

    这样就可以了!

  • 回复于 2011-06-23 12:42 举报
    Yii::app()->session['Lee'] = array('var1'=>'lee');
    

    这样也是可以的!其实Yii::app()->session就是CHttpSession的实例。

  • 回复于 2011-06-23 13:51 举报

    3Q
    舰长

  • 回复于 2011-06-23 13:51 举报

    3Q
    舰长

  • 回复于 2011-06-23 13:51 举报

    我也学习了!之前还真有点不明白!

  • 回复于 2011-07-25 10:08 举报

    thank you 学习了!

  • 回复于 2011-07-25 10:16 举报

    既然CWebApplication的session是只读的,但是为什么能用

    Yii::app()->session['Lee'] = array('var1'=>'lee');
    

    这里还不是改变了session里的内容吗?有点矛盾,这是为什么?

  • 回复于 2012-08-07 13:41 举报

    有点迷糊,还是thank you

您需要登录后才可以回复。登录 | 立即注册