【问题标题】:Yii user module lastvisit_at not being set in dbYii 用户模块 lastvisit_at 未在 db 中设置
【发布时间】:2014-07-24 14:53:11
【问题描述】:

我全新安装了 yii webapp 并安装了 yii user module,但问题是“lastvisit_at”数据库字段在登录时从未更新。它始终设置为默认的“0000-00-00 00:00:00”。我正在使用 netbeans 搜索了整个项目以查找设置的位置,我想我看到了该功能但无法使其正常工作。我是 Yii 和一般框架的新手,所以我可能只是忽略了一些东西。

  • 看起来 User.php 数组正在设置默认值?
  • 我认为问题出在 lastVisit() 函数中,但我不确定是什么问题。

用户.php

    public function rules()
{
    // NOTE: you should only define rules for those attributes that
    // will receive user inputs.CConsoleApplication
    return ((get_class(Yii::app())=='CConsoleApplication' || (get_class(Yii::app())!='CConsoleApplication' && Yii::app()->getModule('user')->isAdmin()))?array(
        array('username', 'length', 'max'=>20, 'min' => 3,'message' => UserModule::t("Incorrect username (length between 3 and 20 characters).")),
        array('password', 'length', 'max'=>128, 'min' => 4,'message' => UserModule::t("Incorrect password (minimal length 4 symbols).")),
        array('email', 'email'),
        array('username', 'unique', 'message' => UserModule::t("This user's name already exists.")),
        array('email', 'unique', 'message' => UserModule::t("This user's email address already exists.")),
        array('username', 'match', 'pattern' => '/^[A-Za-z0-9_]+$/u','message' => UserModule::t("Incorrect symbols (A-z0-9).")),
        array('status', 'in', 'range'=>array(self::STATUS_NOACTIVE,self::STATUS_ACTIVE,self::STATUS_BANNED)),
        array('superuser', 'in', 'range'=>array(0,1)),
                    array('create_at', 'default', 'value' => date('Y-m-d H:i:s'), 'setOnEmpty' => true, 'on' => 'insert'),
                    array('lastvisit_at', 'default', 'value' => '0000-00-00 00:00:00', 'setOnEmpty' => true, 'on' => 'insert'),
        array('username, password, email, superuser, status', 'required'),
        array('superuser, status', 'numerical', 'integerOnly'=>true),
        array('id, username, password, email, activkey, create_at, lastvisit_at, superuser, status', 'safe', 'on'=>'search'),
    ):((Yii::app()->user->id==$this->id)?array(
        array('username, email', 'required'),
        array('username', 'length', 'max'=>20, 'min' => 3,'message' => UserModule::t("Incorrect username (length between 3 and 20 characters).")),
        array('email', 'email'),
        array('username', 'unique', 'message' => UserModule::t("This user's name already exists.")),
        array('username', 'match', 'pattern' => '/^[A-Za-z0-9_]+$/u','message' => UserModule::t("Incorrect symbols (A-z0-9).")),
        array('email', 'unique', 'message' => UserModule::t("This user's email address already exists.")),
    ):array()));
}

登录控制器.php

    public function actionLogin()
{
    if (Yii::app()->user->isGuest) {
        $model=new UserLogin;
        // collect user input data
        if(isset($_POST['UserLogin']))
        {
            $model->attributes=$_POST['UserLogin'];
            // validate user input and redirect to previous page if valid
            if($model->validate()) {
                $this->lastVisit();
                if (Yii::app()->user->returnUrl=='/index.php')
                    $this->redirect(Yii::app()->controller->module->returnUrl);
                else
                    $this->redirect(Yii::app()->user->returnUrl);
            }
        }
        // display the login form
        $this->render('/user/login',array('model'=>$model));
    } else
        $this->redirect(Yii::app()->controller->module->returnUrl);
}

private function lastVisit() {
    $lastVisit = User::model()->notsafe()->findByPk(Yii::app()->user->id);
    $lastVisit->lastvisit = time();
    $lastVisit->save();
}

【问题讨论】:

  • 你确定 lastVisit 函数执行得很好吗? (尝试输入一些日志)

标签: php yii yii-extensions


【解决方案1】:

在你的 lastVisit() 函数中尝试改变这个

$lastVisit->lastvisit = time();

到这里

$lastVisit->lastvisit_at = time();

【讨论】:

  • 我试过了,登录时数据库条目没有变化。
  • 你的 User.php 文件中有什么功能吗?像'setLastvisit'这样的东西??也正如 darkheir 建议的那样,尝试查找控制器中的 lastVisit 函数是否执行良好
【解决方案2】:

其实我想通了。当我实现 Yii-user 模块时,我没有替换登录方法的 CMenu url。一旦我换掉它,它就会按预期工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多