非常简单的方法在你的后台添加《系统管理员操作日志》的功能
出于监控多用户操作后台的目的,往往需要把各个管理员操作了什么记录下来。
这个功能用yii2来实现简直是太简单了!下边上代码~
此demo基于advanced,具体功能可以参考demo 帐号demo 密码111111
1、在backend目录创建components/AdminLog.php
<?php namespace backend\components; use Yii; use yii\helpers\Url; 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; $model = new \common\models\AdminLog(); $data = [ \'route\' => $route, \'description\' => $description, \'user_id\' => $userId, \'created_at\' => time(), ]; $model->setAttributes($data); $model->save(); } } }
2、在backend/config/main.php添加
\'on beforeRequest\' => function($event) { \yii\base\Event::on( \yii\db\BaseActiveRecord::className(), \yii\db\BaseActiveRecord::EVENT_AFTER_UPDATE, [\'backend\components\AdminLog\', \'write\'] ); },
3、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;
4、用gii生成AdminLog模型:命名空间为common\models
版权声明:本文为grimm原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。