这是我的代码:
for ($i=0; $i < count($rights); $i++) {
$this->setState($rights[$i], true);
}
这里我动态设置setState,但我想获取列表中的所有状态。我没有找到任何关于此的参考。我才发现这个:
Yii::app()->user->getState('name');
但这对我没有帮助。如何获得yii中所有状态的列表? THX
答案 0 :(得分:1)
根据CWebUser
的API,该目的没有任何功能。
根据setState
的代码,您可以看到它将值保存在会话中,并且没有其他方式存储&#34;使用过的状态。 (就像所有创建状态的数组一样)
public function setState($key,$value,$defaultValue=null)
{
$key=$this->getStateKeyPrefix().$key;
if($value===$defaultValue)
unset($_SESSION[$key]);
else
$_SESSION[$key]=$value;
}
一个解决方案是手动浏览所有现有会话($ _SESSION),但在我看来,这不是一个非常有效的想法。
另一个解决方案是使用属性/变量(array
)来保存您创建的所有状态,而不是使用foreach
循环,使用getState
。< / p>