入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

yii2记录admin操作日志

创建时间:2016-12-02 投稿人: 浏览次数:1713

出于监控多用户操作后台的目的,往往需要把各个管理员操作了什么记录下来。这个功能用yii2来实现简直是太简单了!下边上代码~

在backend目录创建components/AdminLog.php

<?php

namespace backendcomponents;

use Yii;
use yiihelpersUrl;

class AdminLog
{
    public static function write($event)
    {
        // 具体要记录什么东西,自己来优化$description
        if(!empty($event->changedAttributes)) {
            $desc = "";
            foreach($event->changedAttributes as $name => $value) {
                $desc .= $name . " : " . $value . "=>" . $event->sender->getAttribute($name) . ",";
            }
            $desc = substr($desc, 0, -1);
            $description = Yii::$app->user->identity->username . "修改了" . $event->sender->className() . "id:" . $event->sender->primaryKey()[0] . "的" . $desc;
            $route = Url::to();
            $userId = Yii::$app->user->id;
            $data = [
                "route" => $route,
                "description" => $description,
                "created_at"=>time(),
                "user_id" => $userId
            ];
            $model = new commonmodelsAdminLog();
            $model->setAttributes($data);
            $model->save();
        }
    }
}

在backend/config/main.php添加

"on beforeRequest" => function($event) {
        yiiaseEvent::on(yiidbBaseActiveRecord::className(), yiidbBaseActiveRecord::EVENT_AFTER_UPDATE, ["backendcomponentsAdminLog", "write"]);
    },

mysql中创建admin_log表

CREATE TABLE `admin_log` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `route` varchar(255) NOT NULL DEFAULT "",
  `description` text,
  `created_at` int(10) NOT NULL,
  `user_id` int(10) NOT NULL DEFAULT "0",
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。