1

継承された Yii Framework サイトを通り抜けようとしています。以前はオブジェクト指向の知識がほとんどありませんでした。

このように何があるかを確認するために、いくつかのユーザー情報を印刷しています...

print_r(Yii::app()->user);

そして、それはこれを印刷しています...

CWebUser Object (
[allowAutoLogin] => 1
[guestName] => Guest
[loginUrl] => Array
    (
        [0] => /site/login
    )

[identityCookie] => 
[authTimeout] => 7200
[autoRenewCookie] => 
[autoUpdateFlash] => 1
[loginRequiredAjaxResponse] => 
[_keyPrefix:CWebUser:private] => 7c6285462394c9a141b5d66dce54e8f2
[_access:CWebUser:private] => Array
    (
        [Admin] => 
        [Judge] => 
        [Student] => 1
    )

[behaviors] => Array
    (
    )

[_initialized:CApplicationComponent:private] => 1
[_e:CComponent:private] => 
[_m:CComponent:private] => 
)

このユーザーが学生であるという情報を取得しようとしています。分かった!それはそこにある!

[Student] => 1

しかし、どうすればその情報を入手できますか?

アップデート:

_access と関係があると思われる CWebUser の部分を次に示します。

private $_access=array();


    public function checkAccess($operation,$params=array(),$allowCaching=true)
{
    if($allowCaching && $params===array() && isset($this->_access[$operation]))
        return $this->_access[$operation];

    $access=Yii::app()->getAuthManager()->checkAccess($operation,$this->getId(),$params);
    if($allowCaching && $params===array())
        $this->_access[$operation]=$access;

    return $access;
}
4

2 に答える 2

3

以下は、ユーザーが「学生」アクセス権を持っているかどうかを示しているはずです。

$isStudent = Yii::app()->user->checkAccess('Student') == 1;

于 2013-03-19T20:28:08.640 に答える
1

「学生」は $_access 配列の一部です。ただし、$_access はプライベートなので、直接アクセスすることはできません。

しかし、それを取得するためのメソッド (関数) が必要です。クラスを見て、次のCWebUserようなメソッドがあるはずです

getStudent();

isStudent();

または多分

$access = getAccess();
$access['student'];

編集: checkAccess はこのようなものを使用しているようですcheckAccess('student');

于 2013-03-19T20:09:24.010 に答える