CWebUser从自己的用户模型调用方法

时间:2014-03-24 18:37:17

标签: authentication yii

我通过LoginForm :: authenticate()和login()+ SiteController :: actionLogin()和actionLogout()从默认方法切换到用户身份验证,使用我的应用程序自己的User :: authenticate( )和login()+ UserController :: actionLogin()和actionLogout()。

User模型有其他方法(例如User :: isRegisteredToCourse()),我需要经常调用它们。对于记录的用户(即具有与CWebUser相同ID的用户),是否有更简单,更精简的方式来访问这些方法而不是以下方法...?

    User::model()->findByPk(Yii::app()->user->id)->isRegisteredToCourse()

我正在寻找类似的东西:

    LoggedUser::isRegisteredToCourse()

或者至少:

    Yii::app()->user->isRegisteredToCourse()

但我不知道将CWebUser与我自己的用户模型一起加入的最佳方式是什么。

有什么想法吗?


更新:我发现快捷方式对已记录用户的引用的最简单方法是创建扩展CWebUser的WebUser类并将此model()方法添加到其中,以返回对User的引用: / p>

/**
 * Returns the logged user's User model.
 * @return User the user's User model. If the user is not logged in, this will be false.
 */
public function model()
{
    if(count($model=User::model()->findByPk(Yii::app()->user->id)) == 1)
        return $model;
    else
        return false;
}

现在,对已登录用户方法的调用缩短为:

    Yii::app()->user->model()->isRegisteredToCourse()

虽然,我一直期待获得一个更精简的快捷方式,因为只是为了从已登录的用户调用方法而编写五级引用并不是非常有用。

0 个答案:

没有答案