yii2记录admin操作日志
出于监控多用户操作后台的目的,往往需要把各个管理员操作了什么记录下来。这个功能用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。
- 上一篇: yii2使用console
- 下一篇: yii2使用缓存