首先用Yii::app()->user->setState('xxx', 'yyy');添加了一个state
然后使用Yii::app()->user->setState('xxx');可以得到正确的值,但是使用Yii::app()->user->hasState('xxx')得到的结果确实false,看了一下源代码,好像hasState的时候多了一个__states,不知是不是bug。
首先用Yii::app()->user->setState('xxx', 'yyy');添加了一个state
然后使用Yii::app()->user->setState('xxx');可以得到正确的值,但是使用Yii::app()->user->hasState('xxx')得到的结果确实false,看了一下源代码,好像hasState的时候多了一个__states,不知是不是bug。
多谢!已经解决了。
老大,我check out了最新代码,好像还是不行啊
你用的是1.0 branch么?哪个revision?
使用的是1.0的branch,qiang最后改的还是不管用,查看了一下session,39be102e0fee95827ba2ff692ae9575c__states => Array ( ),也就是说setState的时候$states[$key]=true;的值没有被保存到session。
为什么不采用直接判断session中是否有这么一个值呢,比如return isset($_SESSION[$this->getStateKeyPrefix().$key]),
抓了一下log,估计是在用户login的时候调用了changeIdentity,在这个函数里面会调用loadIdentityStates,这个时候$this->setState('__states',array());将session中的所有__states都清空了,所以之后调用hasState的时候,所有的结果都是false。
是这样的。我发昏了。呵呵。已经改好了。
好了,qiang也是个夜猫子啊,呵呵。