1

次のクラスがあります。しかし、アクセスしようとするYii::app()->user->realName;とエラーが発生します。

全部理解できません。助けてください!

次のコードは私のUserIdentityクラスのコードです。

<?php

/**
 * UserIdentity represents the data needed to identity a user.
 * It contains the authentication method that checks if the provided
 * data can identity the user.
 */
class UserIdentity extends CUserIdentity {

    public $id, $dmail, $real_name;

    /**
     * Authenticates a user.
     * The example implementation makes sure if the username and password
     * are both 'demo'.
     * In practical applications, this should be changed to authenticate
     * against some persistent user identity storage (e.g. database).
     * @return boolean whether authentication succeeds.
     */
    public function authenticate() {
        $theUser = User::model()->findByAttributes(array(
                    'email' => $this->username,
                   // 'password' => $this->password
                ));
        if ($theUser == null) {
            $this->errorCode = self::ERROR_PASSWORD_INVALID;
        } else {
            $this->id = $theUser->id;
            $this->setState('uid', $this->id);
         //   echo $users->name; exit;
          //  $this->setState('userName', $theUser->name);
            $this->setState("realName",$theUser->fname .' '. $theUser->lname);
            $this->errorCode = self::ERROR_NONE;
        }
        return!$this->errorCode;
    }

}
?>
4

1 に答える 1

3

目的の結果を得るには、CWebUserクラスを拡張する必要があります。

class WebUser extends CWebUser{
    protected $_realName = 'wu_default';

    public function getRealName(){
        $realName = Yii::app()->user->getState('realName');
        return (null!==$realName)?$realName:$this->_realName;
    }

    public function setRealName($value){
        Yii::app()->user->setState('realName', $value);
    }
}

realName次に、を使用して属性を割り当てて呼び出すことができますYii::app()->user->realName

これprotected $_realNameはオプションですが、デフォルト値を定義できます。使用しない場合は、getRealNameメソッドの戻り行をに変更してreturn $realNameください。

上記のクラスをcomponents/WebUser.php、、またはロードまたは自動ロードされる場所に配置します。

新しいWebUserクラスを使用するように構成ファイルを変更すると、すべての設定が完了します。

'components'=>
    'user'=>array(
        'class'=>'WebUser',
    ),
...
),
于 2012-12-02T09:31:29.733 に答える