1

これは私のコードです:

for ($i=0; $i < count($rights); $i++) {
    $this->setState($rights[$i], true);
}

ここでは setState を動的に設定していますが、リスト内のすべての状態を取得したいと考えています。これに関する参考文献は見つかりませんでした。私はこれだけを見つけました:

Yii::app()->user->getState('name');

しかし、これは私を助けていません。yii ですべての州のリストを取得するにはどうすればよいですか? どうも

4

2 に答える 2

0

CWebUser のソース コードを見ると、その 関数がキーをgetState()探しているだけであることがわかります。$_SESSIONstateKeyPrefix

public function getState($key,$defaultValue=null)
    {
        $key=$this->getStateKeyPrefix().$key;
        return isset($_SESSION[$key]) ? $_SESSION[$key] : $defaultValue;
    }

次のコードを使用して、州のプレフィックスとすべての州を取得できます。

$prefix = Yii::app()->user->stateKeyPrefix;
$states = array();
foreach( $_SESSION as $key=>$value ) {
  if( strpos($key, $prefix) === 0 ) {
    states[ substr( $key, strlen( $prefix ) ) ] = $value;
  }
}
于 2015-05-05T09:10:29.067 に答える