首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Yii-2应用程序中设置用户状态(在线/脱机)?

如何在Yii-2应用程序中设置用户状态(在线/脱机)?
EN

Stack Overflow用户
提问于 2016-01-12 20:48:16
回答 1查看 1.7K关注 0票数 1

为此,我在Gii生成的用户模型中编写了一个函数,该模型设置相应用户表的“status”字段,如下所示

代码语言:javascript
复制
public function setStatus()
    {
     if (!\Yii::$app->user->isGuest) {
     $this->status = 1;
     }
     else {
         $this->status = 0;
     }
    }

现在在我的主计长:

代码语言:javascript
复制
public function actionLogout()
    {
        $usr = new \frontend\models\User;
        $usr->setStatus();

        Yii::$app->user->logout();

        return $this->goHome();

    }

但是Yii抛出了一个错误:

无法重新声明前端\模型\用户::tableName();

我试图回显所有自动加载的类,但是这个类不是自动加载的。我该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-13 03:09:26

至于您的错误,请检查this related question

很可能是在这个类中定义了两次,并且不使用IDE,因为它们中的大多数都突出了这类错误。

至于地位-这没什么意义。使用Yii::$app->user->isGuest检查足以确定用户是否已被记录或来宾。但是,这不适合确定用户是否在线/脱机。

对于这个问题,前面也有类似的问题,比如this question

最后,不要使用硬编码状态,而是将它们声明为模型中的常量:

代码语言:javascript
复制
const STATUS_OFFLINE = 1;
const STATUS_ONLINE = 2;

用法:self::STATUS_OFFLINE (在声明它的类中)或User::STATUS_OFFLINE (不要忘记在使用部分中包含名称空间)。

更新:认为用户在线只是因为用户登录了似乎是不对的。但是,如果只需要计算登录用户中的在线/脱机用户,那么如果只有两种可能的选项,为什么需要状态呢?使用is_online布尔列代替。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34753487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档